我有一个 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.0
IP并用其他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 正则表达式的类似主题: