如何扫描多个日志文件以查找哪些日志文件中包含特定的IP地址?

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行的目录.如果你质疑目录更改为".",我将从日志目录中运行脚本.

麦克风.

A. *_*Rex 14

你能用grep吗?


Osa*_*eed 5

要获得IP的所有行,我会直接使用grep,不需要显示文件列表,这是一个简单的命令:

grep 12\.211\.23\.200 *

我喜欢将它传输到另一个文件,然后在编辑器中打开该文件...

如果你坚持想要文件名,那也很容易

grep -l 12\.211\.23\.200 *

grep可以在所有Unix // Linux上使用GNU工具,或在Windows上使用众多实现之一(unxutils,cygwin,...等).