apacheのアクセスログから、特定のページのIP別のページビュー数とIPのWhois情報の取得

 単純にいうとコマンド一行でいけます。中身はやや複雑ですが、こんな感じです。

echo "ip,hostname,country,region,city,organization,location,postal,timezone,count" >ipwhois.csv; for var in `sudo cat /var/log/apache2/access.log /var/log/apache2/access.log.1 | grep myhppage.html | gawk '{print $1}' | sort | uniq -c| gawk '{print $1 "," $2}'`;do arr=($(echo $var | tr "," " ")); ip=${arr[1]} ;echo  `curl ipinfo.io/${ip}?token=xxxxxxxxxx | jq -r '[.ip,.hostname,.country,.region,.city,.org,.loc,.postal,.timezone]|@csv'`,${arr[0]};done >> ipwhois.csv

1.echo でタイトル行をipwhois.csvに書き込む
2.アクセスログ・ファイル、access.logとaccess.log.1を標準出力に出してgrepで絞り込み、gawkでIPを取り出す。
3.取り出したIPをsortして、uniqでカウントして、gawkでカウント数とIPアドレスをカマンで結合する
4.結合したものをvarという変数にいれて、do ループに入る。
5.do ループはtrでカンマをスペースに置き換え、arr配列を作り出す。
6.$ip変数はcurlのipinfo.ioサイトに渡してjsonのwhois情報を取得し、jqでcsvに変換する。
7、変換したcsvの後ろにarr配列に確認しているカウント数と結合してipwhois.csvに追記して完成する

コメント

人気の投稿