从日志文件中提取 IP 地址并将其列在另一个文件中

从日志文件中提取 IP 地址并将其列在另一个文件中

我设置了一个蜜罐,想分析许多暴力攻击的来源。我想提取所有 IP 地址并将它们以列表形式添加到另一个文件中。然后,该脚本将成为 cron 作业的一部分,并将附加的唯一 IP 附加到列表文件的底部。

如何从日志文件中提取 IP 地址并将其列在另一个文件中?

答案1

最简单的方法可能是一个简单的 grep:

grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /path/to/sourcefile > output.txt

这将从源文件中提取所有 IP 地址并将它们写入 output.txt,并用换行符分隔。

答案2

我会用类似的东西:

perl -MRegexp::Common -wnE 'say for /$RE{net}{IPv4}/g' log-file > another-file

Regexp::Common如果您的操作系统未附带Perl 模块,则这将要求您安装 Perl 模块。该-n开关使其在输入文件上逐行迭代;然后,它将遍历每个出现的 IP 地址,并将每个 IP 地址打印到单独的行中。该Regexp::Common模块将具有与 IP 地址匹配的模式,该模式可在$RE{net}{IPv4}.

答案3

我使用 awk 将 IP 地址放入名为“i”的关联数组中,并使用匹配项作为索引。然后,我打印索引,从而删除重复数据。

awk 'match($0, /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) {i[substr($0,RSTART,RLENGTH)]=1}END{for(ip in i){printf("%s\n", ip)}}' sourcefile

相关内容