sed+IP 后特定行上的文本

发布于 2024-09-29 09:09:14 字数 986 浏览 3 评论 0原文

我的 proftpd 日志中有以下行(准确地说是第 78 行),

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 版本过时,还有其他方法可以实现同样的效果吗?还有>>导致配置在文件末尾重复(我再次确定这是我的 sed 版本的限制)。这是在我的 nas 上运行自制 Linux 内核。 sed 选项如下:

root@NAS:~# sed BusyBox v1.7.0 (2009-04-29 19:12:57 JST) 多方通话 二进制

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

选项: -e script 将脚本添加到要执行的命令中 -f scriptfile 将脚本文件内容添加到 要执行的命令 -i 就地编辑文件 -n 禁止自动打印模式空间 -r 使用扩展正则表达式语法

如果没有给出 -e 或 -f,则第一个 非选项参数被视为 sed 脚本来解释。全部剩余 参数是输入文件的名称;如果 没有指定输入文件,那么 读取标准输入。源文件 除非 -i 选项,否则不会被修改 已给出。

为你们的帮助干杯。

I have the following line in my proftpd log (line 78 to be precise)

Deny from 1.2.3.4

I also have a script which rolls through my logs for people using brute force attacks and then stores their IP (ready for a black listing). What i'm struggling with is inserting (presume with sed) at the end of that specific line - this is what I've got so far:

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

Now one would presume this would work perfectly, however it actually does the following (lines 77 through 78):

3.4.5.6
Deny from 1.2.3.4

I suspect this is due to my dated version of sed, are there any other ways of acheiving the same thing? Also the >> causes the config to be duplicated at the end of the fole (again i'm sure this is a limitation of my version of sed). This is running a homebrew linux kernel on my nas. Sed options below:

root@NAS:~# sed BusyBox v1.7.0
(2009-04-29 19:12:57 JST) multi-call
binary

Usage: sed [-efinr] pattern [files...]

Options:
-e script Add the script to the commands to be executed
-f scriptfile Add script-file contents to the
commands to be executed
-i Edit files in-place
-n Suppress automatic printing of pattern space
-r Use extended regular expression syntax

If no -e or -f is given, the first
non-option argument is taken as the
sed script to interpret. All remaining
arguments are names of input files; if
no input files are specified, then the
standard input is read. Source files
will not be modified unless -i option
is given.

Cheers for your help guys.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绝不放开 2024-10-06 09:09:14

这与sed的版本无关;这只是普通的“做错事”。

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

This has nothing to do with the version of sed; this is just plain old Doing It Wrong.

sed -i '77s/$/,3.4.5.6/' /opt/etc/proftpd.conf
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文