※ ChatGPTを利用し、要約された質問です(原文:5秒に1回以上アクセスしてくる接続元IPをアクセスログから抽出したい)
アクセスログから過去1分間に12回以上アクセスしているIPを抽出する方法
このQ&Aのポイント
質問者は、アクセスログから過去1分間に12回以上アクセスしているIPを抽出する方法を知りたいとしています。
アクセスログファイルは、それぞれのドメインごとに保存されており、フォーマットは接続元IP、アクセス日時、アクセス先ファイル、User-agentの順です。
質問者は、cronを使用して1分おきにシェルスクリプトを実行し、アクセスログを調査する予定です。
5秒に1回以上アクセスしてくる接続元IPをアクセスログから抽出したい
1分おきにアクセスログを調査し、"/cgi/test.cgi" というファイルに
過去1分間 に12回以上(5秒に1回以上)アクセスしている接続元IPがあるかを
検査したいと思っています。
調査するアクセスログファイルは以下のような位置にドメイン名ごとに在ります。
/home/account/ドメイン名1/access_log
/home/account/ドメイン名2/access_log
/home/account/ドメイン名3/access_log
そしてアクセスログのフォーマットは以下のように、
接続元IP、アクセス日時、アクセス先ファイル、User-agent の順です。
66.77.88.99 - - [01/Mar/2010:21:56:39 +0900] "GET /cgi/test.cgi?order=&class=1& HTTP/1.1" 200 3191 "-" "Mozilla/5.0 (compatible; Googlebot/2.1)"
-------------------------------
例えば単純に
#tail -n 100 /home/account/*/access_log |grep "/cgi/test.cgi"
で、過去ログ100行分の中で /cgi/test.cgi にアクセスしている
接続元IPの一覧は分かりますが、
「過去1分間に12回以上出現しているIP」を抽出するには、
うまい方法が分かりません。
shはcronで1分おきに実行させる予定です。
よい方法がありましたら、ぜひご提示頂きましたら嬉しいです。どうぞ宜しく御願いいたします。
お礼
ありがとうございます。よく分かりました。 これを自分で書けるようになるには相当時間がかかりそうです。