ログファイルから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アドレスが抽出され、改行文字で区切られ、出力.txtに書き込まれます。

答え2

私は次のようなものを使用します:

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

Regexp::CommonオペレーティングシステムにPerlモジュールが付属していない場合は、Perlモジュールをインストールする必要があります。この-nスイッチを使用すると、入力ファイルを1行ずつ繰り返してから、各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

関連情報