当前位置: 首页 > news >正文

TCP状态统计 - 脚本命令

一、netstat命令说明

netstat常见参数
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

二、统计TCP状态

统计TCP状态:netstat -ant | awk 'NR>=3 {++State[$6]} END {for (key in State) print key,State[key]}'
                ss -ant | awk 'NR>=2 {++State[$1]} END {for (key in State) print key,State[key]}'

首先是netstat内容输出:
[vagrant@localhost ~]$ netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:39198               0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 10.0.2.15:22                10.0.2.2:58263              ESTABLISHED
tcp        0      0 :::51041                    :::*                        LISTEN
tcp        0      0 :::111                      :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 ::1:25                      :::*                        LISTEN


命令注释:netstat -n | awk '/^tcp/ {++state[$NF]} END {for(a in state) print a, state[a]}'

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

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

NF
The number of fields in the current input record.(表示输入数据的字段总数,如上所示的记录,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制表符分割,美化一下。

NR>=3
The total number of input records seen so far.(NR表示已输入数据行数目,即表示从第二行开始处理,NR和NF都是内建变量)


同理ss工具下的awk语句应该修改成:ss -ant | awk 'NR>=2 {++State[$1]} END {for (key in State) print key,State[key]}'
[root@localhost ~]# ss -ant
State       Recv-Q Send-Q                         Local Address:Port                                        Peer Address:Port
LISTEN      0      50                                         *:3306                                                   *:*
LISTEN      0      128                                        *:6379                                                   *:*
LISTEN      0      128                                        *:80                                                     *:*
LISTEN      0      128                                        *:22                                                     *:*
LISTEN      0      100                                127.0.0.1:25                                                     *:*
ESTAB       0      0                                  10.0.2.15:22                                              10.0.2.2:58352
ESTAB       0      0                                  10.0.2.15:22                                              10.0.2.2:57127
LISTEN      0      128                                       :::80                                                    :::*
LISTEN      0      32                                        :::21                                                    :::*
LISTEN      0      128                                       :::22                                                    :::*
LISTEN      0      100                                      ::1:25                                                    :::*

三、统计每个IP的连接数

统计每个IP的连接数:netstat -n | awk '/^tcp/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c| sort -rn
                      ss -n | awk '/^tcp/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c| sort -rn

---------------------------------------------------(netstat -n in CentOS6)----------------------------------------------------
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 10.0.2.15:22                10.0.2.2:58262              ESTABLISHED
tcp        0      0 10.0.2.15:22                10.0.2.2:58263              ESTABLISHED

---------------------------------------------------(ss -n in CentOS7)---------------------------------------------------------
Netid State      Recv-Q Send-Q                       Local Address:Port                                      Peer Address:Port
tcp   ESTAB      0      0                                10.0.2.15:22                                            10.0.2.2:58352
tcp   ESTAB      0      0                                10.0.2.15:22                                            10.0.2.2:57127


netstat -n                  :以数字形式显示地址信息
awk '/^tcp/ {print $5}'     :筛选以tcp开头的行,并打印5th filed.
awk -F: '{print $1}'        :以冒号为字段分隔符,打印第一个字段(-F fs 指定行中分隔数据字段的字段分隔符)
uniq -c                     :去除重复项目,-c 进行计数
sort -rn                    :进行排序,-r 反向排序 -n 使用纯数字进行排序

 

转载于:https://www.cnblogs.com/echo1937/p/6646208.html

相关文章:

  • Flask的Jinja2模板引擎 - 全局函数
  • 二叉树性质
  • Win10系列:C#应用控件基础2
  • Ubuntu下搭建tftp服务器最简单方法
  • PHP基础笔记【2】字符串操作
  • 深入分析Java单例模式的各种方案
  • 左手书法二十七篇
  • Flink - NetworkEnvironment
  • 修改Jmeter配置使能支持更大并发
  • 关于grep正则表达式-1
  • web前端性能优化总结
  • Cloudera Manager是啥?主要是干啥的?
  • Android中的动画,选择器,样式和主题的使用
  • 基于zedboard的DMA设计笔记
  • WePY 在小程序性能调优上做出的探究
  • @jsonView过滤属性
  • extjs4学习之配置
  • JS学习笔记——闭包
  • Netty 4.1 源代码学习:线程模型
  • PhantomJS 安装
  • springMvc学习笔记(2)
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Vue.js-Day01
  • 从伪并行的 Python 多线程说起
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 复杂数据处理
  • - 概述 - 《设计模式(极简c++版)》
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 数据可视化之 Sankey 桑基图的实现
  • 双管齐下,VMware的容器新战略
  • 听说你叫Java(二)–Servlet请求
  • elasticsearch-head插件安装
  • 进程与线程(三)——进程/线程间通信
  • ( 10 )MySQL中的外键
  • (31)对象的克隆
  • (5)STL算法之复制
  • (libusb) usb口自动刷新
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (黑马C++)L06 重载与继承
  • (六)软件测试分工
  • (转)fock函数详解
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Micro Framework初体验
  • .NET 命令行参数包含应用程序路径吗?
  • .NET 事件模型教程(二)
  • .net快速开发框架源码分享
  • @ComponentScan比较
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [20160902]rm -rf的惨案.txt
  • [C++提高编程](三):STL初识
  • [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.