【发布时间】:2012-02-02 19:21:49
【问题描述】:
为了阻止顽固的黑客,我开发了一个 tcpdump 命令,它将失败的身份验证和前面的 4 行打印到控制台。由于有时我必须睡觉,所以我想编写一个程序,在打印失败登录时自动将 IP 添加到防火墙。
简化示例:
tcpdump [options] | grep [username] | perl -en [
isolate username using regex;
if username is the target username,
examine previous lines looping until IP is detected;
append properly formatted firewall command to firewall file;
run firewall file]
我已经让 tcpdump 和 grep 工作了。我对 Perl 有足够的了解,可以在脚本文件中对此进行编程,但是 Perl 的命令行让我很难过。
【问题讨论】:
-
向我们展示您尝试匹配的传入字符串的示例、您尝试提取的内容以及您尝试过的任何当前解决方案,我们将能够更好地帮助您.
-
如果您知道如何编写脚本,为什么不将您的 tcpdump 通过管道传输到脚本?命令行上的多行 Perl 非常难看。
-
“命令行 Perl”与 Perl 脚本没有什么不同。你只需要引用你的 Perl 代码来保护它不受 shell 的影响。但是真的没有理由必须在
perl -e之后;写个脚本就好了。 -
好主意...我将其发送到脚本
-
好的,我创建了脚本,但无法将输入输入其中。尾 -f 消息 | grep --line-buffered "身份验证失败:" | awk '{打印 $1,$2,$3,$10}' | test3.pl ... test3.pl 永远看不到输入 ... 我尝试了 ARGV 和 STDIN 方法...但是如果我离开最后一个管道和 test3.pl 我看到 test3.pl 应该看到什么:2 16 年 2 月 3 日:09:36 [user=someusername]