如何从 Debian 的日志文件中编辑所有 IP 地址?

如何从 Debian 的日志文件中编辑所有 IP 地址?

我有一个 pure-ftpd 日志文件,我想定期匿名化。我该怎么做呢?我想删除 IPv4 和 IPv6 地址。恐怕我不知道 sed/awk。

日志文件如下所示:

Oct  3 19:30:39 hostname pure-ftpd: ([email protected]) [INFO] New connection from 0.0.0.0

我想删除0.0.0.0IP并用其他IP替换它。我知道我会将脚本放入 cron 中定期运行。

谢谢!

答案1

尝试使用 IPv4

sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/HELLO!/g' file

替换HELLO!为您需要的内容。

例子:

echo "Oct  3 19:30:39 hostname pure-ftpd: ([email protected]) [INFO] New connection from 0.0.0.0" | sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/HELLO!/g'

输出将:

Oct  3 19:30:39 hostname pure-ftpd: (username@HELLO!) [INFO] New connection from HELLO!

使用 IPv6一切都比看起来更复杂。我需要更多日志文件示例来构建正确的正则表达式模式。但日志中 IPv6 替换的最简单模式是:

sed 's/\([A-Za-z0-9]*:\)\{1,7\}[A-Za-z0-9]\{1,4\}/HELLO!/2g' file

此模式将取代大多数出现的 IPv6 地址,但不是全部!要替换所有发生的情况,您需要更复杂的解决方案。

例子:

echo "Oct  3 19:30:39 hostname pure-ftpd: (username@2001:db8:85a3:8d3:1319:8a2e:370:7348) [INFO] New connection from 2001:db8::1" | sed 's/\([A-Za-z0-9]*:\)\{1,7\}[A-Za-z0-9]\{1,4\}/HELLO!/2g'

输出将:

Oct  3 19:30:39 hostname pure-ftpd: (username@HELLO!) [INFO] New connection from HELLO!

请参阅有关 IPv6 正则表达式的类似主题:

匹配有效 IPv6 地址的正则表达式

相关内容