rtmp-module nginx accessログから誰がアクセスしているのか抜き出す

シェルを利用してaccess.logを解析し、膨大なアクセスログの中から、誰がアクセスしているかを抜き出すスクリプトです。

nginxでベーシック認証で行うと

153.224.176.169 – onitaatsushi [06/Aug/2017:06:53:26 +0900] “GET /live/jp/rtmp_hi.php HTTP/1.1” 200 464 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko

というアクセスログが残る。ユーザ名は onitaatsushi。認証の度にこのログが残るので最新の状態(何時からアクセスしているのかも知りたい)

egrep ‘GET /live/jp/rtmp_’ /usr/local/nginx/logs/access.log |awk ‘{print $3 ” ” $4 $7 $1}’ |sort -r |uniq -f0 -w10 |egrep -v ‘-‘ |sort |less

このスクリプトを使うと、ユーザ名最初から10文字を比較し、同じものはまとめた上で、最新のアクセスログをのみを表示するようにする。スクリプトを走らせたときの表示はこんな書式になる。

onitaatsushi [06/Aug/2017:06:53:26/live/jp/rtmp_hi.php153.224.176.169