如何统计nginx日志里面访问次数最多的IP

发布时间:2013-12-10 18:38:35 阅读:1351次

 转:http://linux008.blog.51cto.com/2837805/663017
今天在论坛上看见有人在问这个问题,后面很多SHELL的高手在讨论,真的让我再一次深切的感受到了SHELL的博大精深,为之震撼。

   先看看我要处理的文件内容

[root@server2 ~]# netstat -ntu

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 127.0.0.1:8652 127.0.0.1:40193 TIME_WAIT

tcp 0 0 127.0.0.1:8652 127.0.0.1:40192 TIME_WAIT

tcp 0 0 127.0.0.1:8652 127.0.0.1:40196 TIME_WAIT

tcp 0 0 127.0.0.1:8652 127.0.0.1:40199 TIME_WAIT

tcp 0 0 127.0.0.1:8652 127.0.0.1:40201 TIME_WAIT

tcp 0 0 127.0.0.1:8652 127.0.0.1:40204 TIME_WAIT

tcp 0 0 127.0.0.1:8652 127.0.0.1:40207 TIME_WAIT

tcp 0 0 127.0.0.1:8652 127.0.0.1:40210 TIME_WAIT

tcp 0 0 192.168.32.62:41682 192.168.47.207:5432 TIME_WAIT

tcp 0 0 192.168.32.62:41685 192.168.47.207:5432 TIME_WAIT

    netstat -ntu | tail -n +3 | awk '{ print $5}' | cut -d : -f 1 | sort | uniq -c| sort -n -r | head -n 5

    tail -n +3 :去掉上面用红色标明的两行。
   awk '{ print $5}':取数据的低5域(第5列),上面蓝色标明。
   cut -d : -f 1 :取蓝色部分前面的IP部分。
   sort:对IP部分进行排序。
   uniq -c:打印每一重复行出现的次数。(并去掉重复行)
    sort -n -r:按照重复行出现的次序倒序排列。
    head -n 5:取排在前5位的IP 。

 

[root@server2 ~]# netstat -ntu | tail -n +3|awk '{ print $5}'| cut -: -f 1 | sort | uniq -c| sort --| head -n 5
8 127.0.0.1
2 192.168.47.207

    这样我们就很清楚的得到了我们想要的结果。

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询

转载请注明:如何统计nginx日志里面访问次数最多的IP 出自老鄢博客 | 欢迎分享