如何统计日志里面访问次数最多的IP    今天在论坛上看见有人在问这个问题,后面很多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 -d : -f 1 | sort | uniq -c| sort -n -r | head -n 5
8 127.0.0.1
2 192.168.47.207

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

   本文参考了论坛上各位高手的帖子,受益匪浅。

(欢迎转载)

http://blog.chinaunix.net/u2/84333/showart_1362179.html

统计一天内访问Apache的IP数Posted on March 22nd, 2009 Fucai.Liang 1 comment

首先要了解一下Apache的log记录形式,如下:

61.135.249.180 - - [22/Mar/2009:04:19:17 +0800] "GET /news_in.php?fid=233& tid=4763 HTTP/1.1" 200 7865 "-" "Mozilla/5.0 Firefox/3.0.5"


第一项为客户端的IP,第二项为访问时间,后面还请求的具体动作,浏览器类型等。我们关心的就是一条记录的第一项,我们知道,客户端每发起一次HTTP请求Apache就会生成如上的一条记录,那么我们自统计的时候就需要注意除掉重复的IP。

用shell实现如下,涉及到awk,sort,unip等工具。

用awk打印每行的第一项。

awk '{print $1}' access_log

用sort排序,方便后面去掉重的IP。

awk '{print $1}' access_log | sort

用uniq去掉重复IP的。

awk '{print $1}' access_log | sort | uniq

然后就可以用wc统计了。

awk '{print $1}' access_log | sort | uniq | wc

简单来说就是一些UNIX工具的结合。

[root@web httpd]# awk '{print $1}' access_log | sort | uniq | wc
   764 764 10982
[root@web httpd]#
http://www.deepwalk.net/?p=26