#!/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
执行结果
[[email protected]]# 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
或者可以跟参数
[[email protected]]# 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
时间: 2024-11-08 18:55:49