日々過ごすブログ

とりあえず文章を書いてみよう、というブログですね

cut, sort, uniq -c

何事も無かったかのように書き始めるぞ。

 

最近、会社でサーバを触る作業をすることが多くて、その中でもアクセスログを解析する事になった。

当然の用にTeraTermUNIXなのだけど、その辺いまいち慣れていないものだから、携帯でコマンドをぐぐりながら、アクセス用端末に向かっている。

その辺で使ったコマンドのメモ。

 

zcat access.log | cut -d" " -f1 | sort -u | uniq -c | sort -nr > tmp.log

 

| で区切っているのは「パイプ」というUNIXの機能で、左側のコマンドの出力を右側のコマンドの入力に渡すことを意味する。>はリダイレクトと言って、今度は左側の結果を右側のファイルに書き込む操作。

 

zcatは、.gz等とアーカイブされたファイルの中身を見る為のコマンド。catの発展型だと思う。でも、本体はgunzipらしい。

 

cutは、文字通り文字の切り出しを行う。

Javaで言うsplit()のようなもので、デリミタを指定して、区切った何番目かを取得する。

今回のログは

255.255.255.255 [13/Mar/14 00:00:00] ~

のような形式で、先頭がIPなので、デリミタを半角スペースにして、1番目のみ切り出している。

sortは文字通りsort。これは、uniqを使う前に必要なようだ。

 

uniqは、重複文字列を除外するコマンド。-cを付けておくと、重複してる数を先頭に付けてくれる。

 

uniqで重複したIPとその数をカウントしたら、再度sortでカウントの多い順に並べる。

-nrは、-nで、先頭についたカウントでソートしてくださいね、と言う意味で、-rは降順に並べてくださいよ、と言う意味。

 

そして結果を、tmp.logに吐き出す。

これをやると、

 255.255.255.255 [13/Mar/14 00:00:00] ~

255.255.255.255 [13/Mar/14 00:00:00] ~

255.255.255.254 [13/Mar/14 00:00:00] ~

 

 

1232 255.255.255.255

867 255.255.255.254

842 10.111.162.20

のようになり、アクセス数の多いIPが分かる。

後はwhoisして、怪しいアクセスを重点的に調査していけばよい。