码迷,mamicode.com
首页 > Web开发 > 详细

netstat和awk结合统计TCP状态

时间:2017-09-04 22:32:55      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:netstat   tcp   

netstat和awk结合统计TCP状态


系统管理员想了解网络连接的状态时候,经常会使用netstat命令去统计服务器目前的网络连接状态,下面使用netstat和awk结合的一条命令可以很好的统计当前的网络状态。


netstat -n|awk ‘/^tcp/ {++state[$NF]} END {for(key in state) print key," \t" ,state[key]}‘


会得到类似下面的结果,具体数字会有所不同:

TIME_WAIT        441

CLOSE_WAIT       66

ESTABLISHED      521


也就是说,这条命令可以把当前系统的网络连接状态分类汇总。


下面解释一下为啥要这样写:


一个简单的管道符连接了netstat和awk命令。


-----------------------------------------


先来看看netstat:


netstat -n


Active Internet connections (w/o servers)

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

tcp        0      0 172.16.1.38:7192            172.16.1.38:8233            TIME_WAIT 


你实际执行这条命令的时候,可能会得到成千上万条类似上面的记录,不过我们就拿其中的一条就足够了。


-----------------------------------------


再来看看awk:


/^tcp/

滤出tcp开头的记录,屏蔽udp, socket等无关记录。


state[]

相当于定义了一个名叫state的数组


NF

表示记录的字段数,如上所示的记录,NF等于6


$NF

表示某个字段的值,如上所示的记录,$NF也就是$6,表示第6个字段的值,也就是TIME_WAIT


state[$NF]

表示数组元素的值,如上所示的记录,就是state[TIME_WAIT]状态的连接数


++state[$NF]

表示把某个数加一,如上所示的记录,就是把state[TIME_WAIT]状态的连接数加一


END

表示在最后阶段要执行的命令


for(key in state)

遍历数组


print key," \t" ,state[key]

打印数组的键和值,中间用\t制表符分割,美化一下。


本文出自 “学习之旅” 博客,请务必保留此出处http://blogtank.blog.51cto.com/10511324/1962580

netstat和awk结合统计TCP状态

标签:netstat   tcp   

原文地址:http://blogtank.blog.51cto.com/10511324/1962580

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!