Top/Devel/ShellScript/Apacheのログ管理

Apacheのログ管理はてなブックマーク

リファラを表示

awk '{if ($11 ~ /^"http/) print $11}' access_log | sed 's/"//g'

特定のユーザーで認証したことのあるIPからのログを消去

L=access_log; T=temp.tmp; if test ! -f $T; then \
for i in `awk '{if($3=="admin"){print $1}}' $L | sort -u`;\
do sed /^$i\ /d $L > $T; mv -f $T $L; done; fi

.をエスケープしてないけど、IP+半角スペースでマッチングしているので多分大丈夫。

ローテートされたログをマージ

ls access.log.* | sort -nr -t. -k3,3 | xargs cat > merged.log

クローラーのIPを表示

awk '{if($7=="/robots.txt"){print$1}}' access_log | sort -un -t. -k1,1 -k2,2 -k3,3 -k4,4

アクセス元ホストを逐次表示

tail -f access_log | gawk '{system("dig -x "$1" +short")}' | sed 's/\.$//'

関連

参考

差分 一覧