|
#!/usr/bin/env python
#coding:utf8
import commands
import time
import sys
def main(count_list):
print "数量\t\tIP地址 \t\t\t连接状态"
for i in count_list:
for x in i.split():
if len(x) > 14:
print "%s \t"% x,
else:
print "%s \t\t" % x,
print
if __name__ == '__main__':
if len(sys.argv) >1:
try:
while 1:
command_str = """netstat -tan | grep '""" + sys.argv[1] + """' |awk '{print $(NF-1),$NF}' | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | awk -F [\ :] '{print $(NF-2),$NF}' | awk '{ip[$0]++}END{for ( i in ip) print ip[i],i | "sort -nr | head -n 20" }' 2>/dev/null """
count_list = commands.getstatusoutput(command_str)[1].split("\n")
main(count_list)
time.sleep(5)
print
print "-----------------------------------------------------"
except:
pass
else:
try:
while 1:
command_str = """netstat -tan|awk '{print $(NF-1),$NF}' | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | awk -F [\ :] '{print $(NF-2),$NF}' | awk '{ip[$0]++}END{for ( i in ip) print ip[i],i | "sort -nr | head -n 20" }' 2>/dev/null """
count_list = commands.getstatusoutput(command_str)[1].split("\n")
main(count_list)
time.sleep(5)
print
print "-----------------------------------------------------"
except:
pass
执行结果
[iyunv@duyunlong-100-70test]# tcpcheck
数量 IP地址 连接状态
313 172.16.6.11 ESTABLISHED
189 172.16.6.13 ESTABLISHED
176 172.16.6.12 ESTABLISHED
64 172.16.100.50 ESTABLISHED
50 172.16.100.51 ESTABLISHED
43 172.16.3.20 ESTABLISHED
31 172.16.1.64 ESTABLISHED
31 172.16.1.62 ESTABLISHED
31 172.16.1.61 ESTABLISHED
30 172.16.4.20 ESTABLISHED
30 172.16.3.81 ESTABLISHED
30 172.16.3.80 ESTABLISHED
30 172.16.3.66 ESTABLISHED
30 172.16.3.21 ESTABLISHED
30 172.16.1.65 ESTABLISHED
30 172.16.1.63 ESTABLISHED
30 172.16.1.60 ESTABLISHED
30 172.16.1.103 ESTABLISHED
30 172.16.1.102 ESTABLISHED
30 172.16.1.101 ESTABLISHED
或者可以跟参数
[iyunv@duyunlong-100-70test]# tcpcheck TIME_WAIT
数量 IP地址 连接状态
15 172.16.3.21 TIME_WAIT
15 172.16.3.20 TIME_WAIT
2 172.16.6.24 TIME_WAIT
|
|