シェルの解説全般

sh

コマンドでアクセスログからIPを抽出する

シェルコマンドを使ってアクセスログ内にあるIPアドレスを抽出する方法を記載しておきます。

普通「アクセスログ IP 抽出」と検索したらファイル内にあるIPアドレスを切り出す方法を調べたいはずなのに、検索すると、アクセス元IPに対して何件アクセスがあったかのサマリーを出す方法しか出て来ないのが謎でした。

grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' /usr/access_log.log | sort | uniq -c

grepコマンドの正規表現を利用して抽出しています。引数の「-E」は正規表現、「-o」は一致した箇所だけを表示するオプションです。

/usr/access_log.logの部分を自分のファイルの場所に直せば利用できます。

grepの後に、パイプラインでソートした結果をユニークなものだけにするようにしていますが、ユニークにしたIPをさらにソートしたい場合は「| sort | uniq -c | sort」のように最後にもう一度sortコマンドを指定すると実現可能です。

自分がどういった表示で出力されていると見やすいかを考慮して実行してみましょう。

  • この記事を書いた人

朝倉卍丸

シングルモルトスコッチなどのお土産を持ってきた人を助けるのが好きです。まあ、昔ながらの方法でやりたいこともありますよね。

-sh