AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-206424

WEBjuju's questions

Martin Hope
WEBjuju
Asked: 2019-12-20 18:32:36 +0800 CST

如何在 readline bash vi(vi shell 模式)中重新映射功能键?

  • 0

关于 vi readline 中的映射功能键,我已经阅读了这两个 stackexchanges:

  • 重新映射 bash vi 键?
  • vi shell 模式的自定义键绑定,即“set -o vi”?

我有一个带触摸条的 MacBookPro。功能键始终打开,但与物理键不同,虚拟触摸栏功能键是喜怒无常的,并且经常在我输入的命令中注入垃圾(这在尝试输入下划线时尤其成问题......我得到了很多, F9,F10可能还有一些F11)。我不使用这些键...所以我希望我可以禁用它们。但是,假设我可以让他们简单地走到行尾。

这是我多次尝试映射到行尾的尝试之一(在插入模式下):

set editing-mode vi
$if mode=vi
    set keymap vi-insert
    "<F9>": end-of-line
$endif

在提示符下键入“asdf”的结果如下:

TT->~$ [] (arg: 20)

我在上面放置了“[]”,在按下 后光标仍然存在<F9>,以防万一。

我尝试过的变体如下:

  • "<F9>": end-of-line
  • <F9>": end-of-line
  • 20: end-of-line
  • "20": end-of-line
  • "arg: 20": end-of-line
  • (arg: 20): end-of-line
  • "(arg: 20)": end-of-line

更新:以下.inputrc现在正在“忽略”:

set keymap vi-insert
"\e[20~":redraw-current-line
bash command-line
  • 1 个回答
  • 621 Views
Martin Hope
WEBjuju
Asked: 2018-06-07 11:51:33 +0800 CST

`history` 命令产生星号 * 条目

  • 2

我修改后的搜索历史行旁边有一个星号。

我搜索了 unix.stackexchange.com 和 stackoverflow.com,但我渴望对我的历史中的星号进行完整的解释(除了手册页上的内容)。

带有 * 的行已被修改。

例子:

$ history | tail
11850*
11851  ./block_ip.sh '23.228.114.203' 'evil probe'
11852  ./block_ip.sh DROP '23.228.114.203' 'evil probe
$

在这个例子中,一个 shell 脚本有第三个参数,但没有错误,我在没有指定 (DROP/ACCEPT) 的情况下运行了它两次。

修改是为了清除这段历史,以便历史扩展不会导致我(再次)输入错误的命令。

我想知道更多关于这个(但我不知道我不知道什么)。

请考虑这两个角度:

  • 我该如何使用它(例如,如果我需要它,我可以得到那个原始命令)?
  • 一个坏人怎么能使用它(有人可以这样隐藏他们的命令历史)?

如果通用答案过于冗长,请注意我的一些设置:

EDITOR=/usr/bin/vim
HISTFILE=/home/jim/.bash_history
SHELLOPTS=braceexpand:hashall:histexpand:history:interactive-comments:monitor:vi

而这个操作系统信息(它是 RedHat ......但 Debian/Fedora/Ubuntu 不应该有太大差异......他们应该吗?):

Linux qwerutyhgfjkd 3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

我使用 bash 作为我的外壳。

bash command-history
  • 1 个回答
  • 1203 Views
Martin Hope
WEBjuju
Asked: 2018-02-25 20:47:40 +0800 CST

阻止 117.0.0.0/8 显示已阻止 localhost

  • 2

我正在尝试阻止一些外国 IP 流量到我们的网络服务器。 Arin.net显示区块 117.0.0.0/8 属于南布里斯班澳大利亚。但是当我阻止它时,它显示为“localhost/8”。

$ sudo iptables -I INPUT -s 117.0.0.0/8 -j DROP -m comment --comment "south brisbane au"

列表的结果iptables -L --line-numbers是:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DROP       all  --  localhost/8          anywhere             /* south brisbane au */

这里发生了什么?为什么 117.0.0.0/8 显示为“localhost/8”?这个块会影响到本地主机的任何流量吗?

更新(和接受的解决方案的输出)

我-n按照几个人的建议实施了使用,包括接受的答案。这是使用后的输出-n:

$ sudo iptables -L -n --line-numbers | head
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DROP       all  --  117.0.0.0/8          0.0.0.0/0            /* south brisbane au */

另一个好处是,iptables -L它变得非常缓慢。我没有时间研究它。但避免 dns 查找也解决了这个问题。显然,源上的 dns 查找变得iptables -L非常非常慢,链中不止少数几个。它现在立即发出该链中的完整 144。源的反向查找是默认设置似乎很奇怪。

iptables
  • 1 个回答
  • 88 Views
Martin Hope
WEBjuju
Asked: 2018-02-09 07:47:42 +0800 CST

预期二元运算符 - 引用 shell 脚本参数的问题

  • 2

我有一个关于在执行 shell 脚本时如何添加参数的问题。

我有一个简单的脚本可以帮助我阻止 IP 范围:

~/block_ip.sh:

if [ ! $3 ]
then
 echo "usage ~/block_ip.sh (DROP/ACCEPT) '0.0.0.0' 'amsterdam'"
 exit 1
fi

echo "adding $3"
sudo iptables -I INPUT -s $2 -j $1 -m comment --comment "$3"

如果我在没有参数的情况下执行此操作,则输出如预期:

~$ ./block_ip.sh
usage ~/block_ip.sh (DROP/ACCEPT) '0.0.0.0' 'amsterdam'

然而,空格似乎是“预期二元运算符”意外输出的原因:

~$ ./block_ip.sh DROP '1.0.0.0/8' 'south brisbane qld'
./block_ip.sh: line 1: [: brisbane: binary operator expected
adding south brisbane au

但是尽管有意外的输出,它还是添加了它:

Chain INPUT (policy ACCEPT)
num  target     prot opt source           destination
1    DROP       all  --  1.0.0.0/8        anywhere         /* south brisbane au */

如果这是一个引用问题,我如何形成论点(不使用反斜杠来转义空格)?当然,我希望我可能需要更改脚本,这也是一个可以接受的解决方案。

bash shell-script
  • 1 个回答
  • 10585 Views
Martin Hope
WEBjuju
Asked: 2018-01-17 07:30:26 +0800 CST

在 centos/apache 中防止不正确的虚拟主机请求

  • 0

我们使用 Apache 2.4 运行CentOS Linux 7.4 版LAMP 堆栈。在监控仪表板上,我跟踪各种性能指标,其中之一是虚拟主机与我们的服务器不匹配的“错误主机请求”。

手动,我使用 arin.net 来查找错误的主机请求。因为我们业务的性质是美国,仅限国内,我们阻止访问我们的外国 IP 范围没有正确的虚拟主机名称。我们使用 iptables 来做到这一点;以下是其中的一个示例,fwiw。

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  187.0.0.0/8          anywhere             /* montevideo uruguay */
DROP       all  --  177.0.0.0/8          anywhere             /* vmontevideo uraguay */
DROP       all  --  164.77.0.0/16        anywhere             /* montevideo uraguay */
DROP       all  --  78-0-0-0.adsl.net.t-com.hr/8  anywhere             /* amsterdam */

这对于减缓来自海外的所有“嗅探器”流量非常有效。.


几乎突然间,在过去的两周里,我们开始每天收到 3-6 个请求,这些请求来自伊利诺伊州芝加哥、亚马逊 AWS(华盛顿州西雅图)、弗里蒙特 CA 等。


以下是 apache 的 access_log 中的一些日志条目:

./myurl.com-access.log:23.20.12.111 - - [16/Jan/2018:00:16:21 -0600] "HEAD / HTTP/1.1" 200 - "-" "Cloud mapping experiment. Contact [email protected]"
./myurl.com-access.log:23.20.54.152 - - [16/Jan/2018:08:10:03 -0600] "HEAD / HTTP/1.1" 200 - "-" "Cloud mapping experiment. Contact [email protected]"
./myurl.com-access.log-20180114:23.20.12.111 - - [13/Jan/2018:08:07:44 -0600] "HEAD / HTTP/1.1" 200 - "-" "Cloud mapping experiment. Contact [email protected]"
./myurl.com-ssl-access.log:74.82.47.3 - - [14/Jan/2018:07:20:31 -0600] "GET / HTTP/1.1" 200 21 "-" "-"
./myurl.com-ssl-access.log:108.178.61.58 - - [15/Jan/2018:06:40:17 -0600] "GET / HTTP/1.1" 200 20 "-" "Mozilla/5.0 zgrab/0.x"
./myurl.com-ssl-access.log:184.154.189.90 - - [15/Jan/2018:07:54:29 -0600] "GET / HTTP/1.1" 200 21 "-" "Mozilla/5.0 zgrab/0.x"
./myurl.com-ssl-access.log:108.178.61.58 - - [16/Jan/2018:06:16:45 -0600] "GET / HTTP/1.1" 200 21 "-" "Mozilla/5.0 zgrab/0.x"
./myurl.com-ssl-access.log:184.154.189.90 - - [16/Jan/2018:06:51:18 -0600] "GET / HTTP/1.1" 200 21 "-" "Mozilla/5.0 zgrab/0.x"
./myurl.com-ssl-access.log:74.82.47.3 - - [16/Jan/2018:07:28:43 -0600] "GET / HTTP/1.1" 200 20 "-" "-"
./myurl.com-ssl-access.log-20180114:74.82.47.3 - - [08/Jan/2018:06:25:14 -0600] "GET / HTTP/1.1" 302 - "-" "-"

有哪些方法可以防止(尽可能早地完全阻止)对没有单个正确虚拟主机的服务器的请求?


为了响应fail2ban可能有帮助的解决方案,我检查了 fail2ban 正在运行:

$ ps aux | grep fail2ban
root      2824  0.0  0.0 368832 53632 ?        Sl    2017  17:44 /usr/bin/python2 -s /usr/bin/fail2ban-server -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid -x -b

我会考虑为它写一条规则——我不能阻止合法的流量——假设没有虚拟主机没有有效的流量会请求主机是否安全(当然,网络应用程序的编写方式需要这个说实话)。


更新

fail2ban 将不起作用,因为它们只使用每个 IP 地址访问服务器一次 - 它们不会重复使用它们。让我声明,我已经有效地识别了网络应用程序第 2 行的流量。现在,我正在向他们发送一个带有随机数的状态 200,非常小,非常快。但我需要一种“隐藏”服务器的方法,以某种方式简单地不以不会给服务器带来任何实际负载的方式进行响应。

security iptables
  • 3 个回答
  • 770 Views
Martin Hope
WEBjuju
Asked: 2017-12-27 08:22:11 +0800 CST

Bash `sleep` 输出 __bp_preexec_invoke_exec

  • 2

背景

我正在运行一个更大的单行命令。它意外地输出(每次迭代两次)以下内容:

__bp_preexec_invoke_exec "$_"

这是精简的命令(删除了循环中的其他活动):

for i in `seq 1 3`; do sleep .1 ; done

注意:在我玩了几次之后,它莫名其妙地停止打印意外的输出

我试过的

  • 如果我删除sleep .5,我不会得到意外的输出
  • 如果我只是运行sleep .5提示返回但没有输出
  • 我已经用谷歌搜索了__bp_preexec_invoke_exec,但我无法确定它如何适用于我正在做的事情

问题

__bp_preexec_invoke_exec "$_"是什么?

如何在没有不需要的输出的情况下运行它?


感谢@gina2x,有关解决方案的更多信息:

这是输出declare -f | grep preexec

    preexec_functions+=(preexec);
    __bp_preexec_interactive_mode="on"
__bp_preexec_invoke_exec ()
    if [[ -z "$__bp_preexec_interactive_mode" ]]; then
            __bp_preexec_interactive_mode="";
        __bp_preexec_interactive_mode="";
    local preexec_function;
    local preexec_ret_value=0;
    for preexec_function in "${preexec_functions[@]}";
        if type -t "$preexec_function" > /dev/null; then
            $preexec_function "$this_command";
            preexec_ret_value="$?";
    __bp_set_ret_value "$preexec_ret_value" "$__bp_last_argument_prev_command"
    if [[ -z "${iterm2_ran_preexec:-}" ]]; then
        __iterm2_preexec "";
    iterm2_ran_preexec="";
__iterm2_preexec ()
    iterm2_ran_preexec="yes";

我在那里看到很多“iterm2”信息(我在 Mac 上并使用 iTerm2.app)。

事实上,当我尝试使用 Terminal.app 进行重现时,我无法重现意外的输出。

优秀的侦探declare -f- 谢谢!

bash command-line
  • 1 个回答
  • 595 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve