Joh*_*n T 1 perl search grep file
最近有一些攻击者在我的服务器上尝试恶意攻击,所以我决定稍微"跟踪"它们,即使我知道它们不会走得太远.
现在,我有一个包含服务器日志的整个目录,我需要一种方法来搜索目录中的每个文件,并在找到字符串时返回文件名.所以我想,自己用于文本和文件操作的语言比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(<FILE>) {
print if /12.211.23.200/;
}
}
Run Code Online (Sandbox Code Playgroud)
虽然它给我目录读取错误.非常感谢任何帮助.
编辑:代码编辑,仍然说权限被拒绝无法打开第10行的目录.如果你质疑目录更改为".",我将从日志目录中运行脚本.
麦克风.
要获得IP的所有行,我会直接使用grep,不需要显示文件列表,这是一个简单的命令:
grep 12\.211\.23\.200 *
我喜欢将它传输到另一个文件,然后在编辑器中打开该文件...
如果你坚持想要文件名,那也很容易
grep -l 12\.211\.23\.200 *
grep可以在所有Unix // Linux上使用GNU工具,或在Windows上使用众多实现之一(unxutils,cygwin,...等).