2010-10-25 34 views
0

我有以下线在我的proftpd日志(线78准确地说)的sed在特定的行+文本的IP后

Deny from 1.2.3.4 

我也有一个脚本,通过我的日志卷使用暴力的人强制攻击,然后存储他们的IP(准备好黑名单)。就是我用的插入(使用sed假设)在特定行的末尾挣扎 - 这就是我这么远:其实

sed "77i3.4.5.6" /opt/etc/proftpd.conf >> /opt/etc/proftpd.conf 

现在人会相信这将很好地工作,但它做以下两行(77至78):

3.4.5.6 
Deny from 1.2.3.4 

我怀疑这是由于我的sed的版本陈旧,是有acheiving同样的事情其他方法吗?此外>>导致配置复制在最后的骗子(我确信这是我的版本的限制)。这是在我的nas上运行一个自制Linux内核。下面SED选项:

根@ NAS:〜#sed的BusyBox的V1.7.0 (2009-04-29 19时12分57秒JST)多呼叫 二进制

用法:sed的[-efinr ]模式[文件...]

选项: -e脚本添加脚本的命令被执行 -f脚本文件添加脚本文件内容到 命令被执行 -i编辑文件在 - 放置 -n抑制图案的自动打印空间 如果没有-e或-f给出-r使用扩展正则表达式语法

,第一 非选项参数被作为 sed脚本解释。所有剩余的 参数是输入文件的名称;如果指定 没有输入文件,那么 则读取标准输入。除非-i选项 给出的源文件 将不会被修改。

干杯您的帮助球员。

回答

2

这有什么好做的sed版本;这只是普通的老做错了。

sed -i '77s/$/,3.4.5.6/' /opt/etc/proftpd.conf 
+0

你该死的聪明的驴子,谢谢。你介意解释这一点吗?它仅仅是第77行搜索的一种情况,然后用返回勾选的IP地址替换'$'(假设这没有意义)? – keeer 2010-10-25 21:37:37

+0

'$'是字符串/行的结尾。所以这基本上只是将地址追加到第77行的结尾。而且,'s'是替代,而不是搜索。 – 2010-10-26 02:33:13