Debian ログファイルですべての IP アドレスを編集するには?

Debian ログファイルですべての IP アドレスを編集するには?

定期的に匿名化したい純粋な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 正規表現に関する同様のトピックを参照してください。

有効なIPv6アドレスと一致する正規表現

関連情報