一、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.0.0:* LISTEN
tcp 0.0.0.0: 0.0.0.0:* LISTEN
tcp 0.0.0.0: 0.0.0.0:* LISTEN
tcp 127.0.0.1: 0.0.0.0:* LISTEN
tcp 10.0.2.15: 10.0.2.2: ESTABLISHED
tcp ::: :::* LISTEN
tcp ::: :::* LISTEN
tcp ::: :::* LISTEN
tcp ::: :::* 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个字段的值,也就是TIME_WAIT state[$NF]
表示数组元素的值,如上所示的记录,就是state[TIME_WAIT]状态的连接数 ++state[$NF]
表示把某个数加一,如上所示的记录,就是把state[TIME_WAIT]状态的连接数加一 END
表示在最后阶段要执行的命令 for(key in state)
遍历数组 print key,"\t",state[key]
打印数组的键和值,中间可以用\t制表符分割,美化一下。 NR>=
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 *: *:*
LISTEN *: *:*
LISTEN *: *:*
LISTEN *: *:*
LISTEN 127.0.0.1: *:*
ESTAB 10.0.2.15: 10.0.2.2:
ESTAB 10.0.2.15: 10.0.2.2:
LISTEN ::: :::*
LISTEN ::: :::*
LISTEN ::: :::*
LISTEN ::: :::*

三、统计每个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 10.0.2.15: 10.0.2.2: ESTABLISHED
tcp 10.0.2.15: 10.0.2.2: ESTABLISHED ---------------------------------------------------(ss -n in CentOS7)---------------------------------------------------------
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 10.0.2.15: 10.0.2.2:
tcp ESTAB 10.0.2.15: 10.0.2.2: netstat -n :以数字形式显示地址信息
awk '/^tcp/ {print $5}' :筛选以tcp开头的行,并打印5th filed.
awk -F: '{print $1}' :以冒号为字段分隔符,打印第一个字段(-F fs 指定行中分隔数据字段的字段分隔符)
uniq -c :去除重复项目,-c 进行计数
sort -rn :进行排序,-r 反向排序 -n 使用纯数字进行排序

TCP状态统计 - 脚本命令的更多相关文章

  1. zabbix监控tcp状态

    Tcp的连接状态对于我们web服务器来说是至关重要的,从TCP的连接状态中可以看出网络的连接情况,服务器的压力情况,对服务器的并发有很好的直观反映:尤其是并发量ESTAB:或者是syn_recv值,假 ...

  2. zabbix对tcp状态监控

    1.先编写一个获取tcp状态的脚本文件,脚本放在/usr/lib/zabbix/alertscripts/vim /usr/lib/zabbix/alertscripts/tcp_status.sh ...

  3. zabbix4.2学习笔记--TCP状态监控

    Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB:或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击(例如SYN攻击),或是是time_wait值比 ...

  4. TCP协议 状态解析和状态统计

    一.三次握手和四次挥手 1.建立连接(三次握手)   (1)服务器会处于listen状态,客户端发送一个带SYN标志的TCP报文到服务器.   (2)服务器端回应客户端的请求,这是三次握手中的第2个报 ...

  5. 如何编写LVS对Real Server的健康状态检测脚本

    简介:Linux 虚拟服务器(Linux Virtual Server. LVS),是一个由章文松开发的自由软件.利用KVS可以实现高可用的.可伸缩缩的Web, Mail, Cache和Medial等 ...

  6. zabbix 监控服务器的TCP状态

    本文介绍如何监控TCP的11种状态: 1.命令选择: ss or netstat netstat 在 Centos7上已经不再支持,ss 打印基于socket的统计信息,实际运行下来,ss的速度比ne ...

  7. 部署Nginx网站服务实现访问状态统计以及访问控制功能

    原文:https://blog.51cto.com/11134648/2130987 Nginx专为性能优化而开发,最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力,单个物 ...

  8. 读懂TCP状态转移

    读懂TCP状态转移过程,对理解网络编程颇有帮助,本文将对TCP状态转移过程进行介绍,但各状态(总共11个)含义不在本文介绍的范围,请参考文末的书目列表. TCP状态转换图(state transiti ...

  9. Linux网络状态工具ss命令使用详解【转】

    ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix dom ...

随机推荐

  1. 本地docker镜像上传到腾讯云镜像仓库。

    和上篇上传到Docker Hub类似,只是登录时切换成腾讯云镜像仓库地址(ccr.ccs.tencentyun.com/longdbtencentdocker/publongdb)即可. docker ...

  2. DGIS之遥感影像数据获取

    1.概要 在GIS圈的同行或多或少接触过遥感,记得在大学老师就说过"数据是GIS的核心".本文介绍在国内下载遥感影像的方法. 地理空间数据云,这个是中科院计算机网络中心建设的一个免 ...

  3. 2019.4.24 3D效果滚筒导航练习

    效果图: 彩千圣天下第一!(小声bb) 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...

  4. Mac下安装Iterm2终端工具

    一般Iterm2是结合oh-my-zsh一起使用,但是如果不喜欢zsh也可以单独使用.Iterm2有个亮点就是可以通过快捷键快速启动. 安装步骤: 1.下载: http://www.iterm2.co ...

  5. C# .net 使用正则表达式去掉字符串中的数字

    /// <summary>/// 去掉字符串中的数字/// </summary>/// <param name="key"></param ...

  6. javascript006_Object_模拟java的Map

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  7. javascript箭头函数

    原文 https://thewebjuice.com/es6-arrows/ 1 使用es6箭头定义匿名函数 (msg)=>console.log('Hello World') es5 'use ...

  8. 关于chrome下的bug

    最近看了大神的一篇文章,于是尝试了一下里面说的bug以及修复 1.Chrome下absolute绝对定位元素部分display属性值不渲染bug 首先还原一下bug.. ff下的下效果 点击按钮后的效 ...

  9. Ibatis框架之系统架构

    如果用最简洁的话来总结 iBATIS 主要完成那些功能时,我想下面几个代码足够概括. Class.forName("oracle.jdbc.driver.OracleDriver" ...

  10. maven多模块下新建子模块

    选中parent模块,右键选择new---others 选择Maven---Maven Module,点击下一步 填写Module Name,其他默认,点击下一步 默认,下一步 默认,点击完成