最近有一些攻击者在我的服务器上尝试恶意攻击,所以我决定稍微"跟踪"它们,即使我知道它们不会走得太远.
现在,我有一个包含服务器日志的整个目录,我需要一种方法来搜索目录中的每个文件,并在找到字符串时返回文件名.所以我想,自己用于文本和文件操作的语言比Perl更好?所以我的朋友正在帮助我使用脚本来扫描某个IP的所有文件,并返回包含IP的文件名,这样我就不必手动搜索每个日志的攻击者了.(我有几百个)
#!/usr/bin/perl $dir = "."; opendir(DIR, "$dir"); @files = grep(/\.*$/,readdir(DIR)); closedir(DIR); foreach $file(@files) { open FILE, "$file" or die "Unable to open files"; while() { print if /12.211.23.200/; } }
虽然它给我目录读取错误.非常感谢任何帮助.
编辑:代码编辑,仍然说权限被拒绝无法打开第10行的目录.如果你质疑目录更改为".",我将从日志目录中运行脚本.
麦克风.
你能用grep吗?
要获得IP的所有行,我会直接使用grep,不需要显示文件列表,这是一个简单的命令:
grep 12\.211\.23\.200 *
我喜欢将它传输到另一个文件,然后在编辑器中打开该文件...
如果你坚持想要文件名,那也很容易
grep -l 12\.211\.23\.200 *
grep可以在所有Unix // Linux上使用GNU工具,或在Windows上使用众多实现之一(unxutils,cygwin,...等).