ユーザ用ツール

サイト用ツール


サイドバー

サーバ:linux:コマンド:アクセスログからアクセスの多いipアドレスを抽出

アクセスログからアクセスの多いIPアドレスを抽出

grep -Eo "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" /var/log/httpd/access_log | sort | uniq -c | sort -r | head -n 15

※ 上記コマンドは、コメントで s.mori さんにご指摘頂いた間違いを修正済みです

解説

grep -E

検索に「拡張正規表現」を使えるようにする。
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} でIPアドレスに一致させる。

grep -o

通常の grep では一致した行全体が表示されるが、-o を指定することにより一致した文字のみを表示させることができる。

sort

次の uniq で重複行のカウントを行うため、並び替える。

uniq -c

重複行のカウントを表示する。
今回の場合は、重複したIPアドレスのカウントを表示する。

sort -r

カウントの降順で並べ替える。

head -n

出力する行数を指定する。

コメント

s.mori, 2021/02/05 16:33

参考にさせて頂きました。ありがとうございます。

一点気になりました。 uniqはソート済みに対して重複行の削除やカウントを行う認識です。 抽出例を以下のようにすると期待する結果が取得できると考えます。

  1. grep -Eo “^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}” /var/log/httpd/access_log | sort | uniq -c | sort -r | head -n 15

参考まで。

humo, 2021/02/08 10:14, 2021/02/08 10:15

s.mori さん、ご指摘ありがとうございます!

uniq コマンドについて確認不足で勘違いしたまま掲載してしまっておりました。
危うくずっと間違った情報を掲載し続けてしまうところでしたので、大変助かりました!

またお役に立つことができたのとのことで幸いです。
ありがとうございました!

コメントを入力. Wiki文法が有効です:
 
サーバ/linux/コマンド/アクセスログからアクセスの多いipアドレスを抽出.txt · 最終更新: 2021/02/08 10:08 by humolife