读书人

一个用以统计当前linux连接某个端口的

发布时间: 2012-09-29 10:30:01 作者: rapoo

一个用来统计当前linux连接某个端口的IP数目的语句
为了要分析连接到当前linux的某个端口,比如80的所有外来IP的数,并且要来个排序
和统计,可以这样:
netstat -tn 2>/dev/null | grep :80 |grep "ESTABLISHED"| awk '{print $5}' | cut -d: -f 4 | sort | uniq -c | sort -nr | head

下面注意来分析:

1)netstat -tn 2>/dev/null
参数t,只显示tcp连接 -n:只显示数字,则会显示入下的形式:

tcp 0 0 64.91.*.*:80 114.198.236.100:12763 TIME_WAIT
tcp 0 0 64.91.*.*:80 175.136.226.244:51950 TIME_WAIT
tcp 0 0 64.91.*.*:80 175.136.226.244:51951 TIME_WAIT
tcp 0 0 64.91.*.*:23 202.127.210.2:14517 TIME_WAIT
tcp 0 0 64.91.*.*:80 149.238.193.121:65268 TIME_WAIT
tcp 0 0 64.91.*.*:80 114.198.236.100:44088 ESTABLISHED
tcp 0 0 64.91.*.*:80 175.136.226.244:51952 TIME_WAIT

2)但是只要established的,则grep "ESTABLISHED"

3)然后再AWK一下:
::ffff: 114.198.236.100:12763
::ffff: 175.136.226.244:51950
::ffff: 175.136.226.244:51951
::ffff: 149.238.193.121:65268
::ffff: 114.198.236.100:44088
::ffff: 175.136.226.244:51952

4)然后注意用cut,提取内容,CUT的用法见:
http://www.cnblogs.com/dong008259/archive/2011/12/09/2282679.html
cut -d : -f 4
这里用:分隔符号,结果为:
114.198.236.100
175.136.226.244
175.136.226.244
149.238.193.121
114.198.236.100
175.136.226.244

5) 然后再排序,group一下,然后按连接次数最多的排在前面
,最后甚至可以head一下,完成了
3 175.136.226.244
2 114.198.236.100
1 149.238.193.121
甚至再wc -l一下,得出当前连接80端口的estabalished的外部IP的总数

1 楼 funnytime 2012-08-31 管道真多,不过一次搞定挺好 2 楼 DiaoCow 2012-09-01 shell有趣的地方就是可以尝试用不同方法解决同一个问题,我也用另外一种方法解决下:
netstat -nt | awk 'NR > 2 {gsub(/:[0-9]+/,"",$5); ip[$5]++;} END {for(i in ip) {print ip[i],i}}' | sort -k1 3 楼 jackyrong 2012-09-01 DiaoCow 写道shell有趣的地方就是可以尝试用不同方法解决同一个问题,我也用另外一种方法解决下:
netstat -nt | awk 'NR > 2 {gsub(/:[0-9]+/,"",$5); ip[$5]++;} END {for(i in ip) {print ip[i],i}}' | sort -k1

精彩,我现在是每15分钟统计一次,但其实我想一天下来,自动顺便把一天的所有值求出平均值后,再写到CSV中,这样就不用在EXCEL中再处理了

读书人网 >UNIXLINUX

热点推荐