的netstat命令提供了大量关于网络活动的信息。与- s选项(netstat - s),它将显示摘要等各种协议数据包,活跃的连接,连接和更多的失败。尽管数据广泛足以让你头晕,你习惯了命令的输出是什么样子,你会熟悉会发生什么,甚至可能让擅长发现什么不寻常的。在这篇文章中,我们将看看不同的部分netstat - s命令的输出使用别名来更容易。
什么样的统计netstat - s命令提供吗?
列出各种类型的数据netstat - s命令提供了,我跑一个命令如下所示列出它显示的协议。的grep - v“^”部分命令只选择行,不要开始一片空白。由于细节都缩进,这个命令显示协议。
美元netstat - s | grep - v“^”Ip: Icmp: IcmpMsg: Tcp, Udp: UdpLite: TcpExt: IpExt: MPTcpExt:
以下命令显示了协议包括标题和行号与标签要求冒号和省略线。行号将帮助隔离部分的别名。
美元netstat - s |问| grep”(A-Za-z): $ | grep pv的\ t 1 Ip: 10 Icmp: 19 IcmpMsg: 22 Tcp: 33 Udp: 41 UdpLite: 42 TcpExt: 93 IpExt: 104 MPTcpExt:
这个命令数量整体上的线输出:
netstat - s | w - l 104美元
在上面的输出中,我可以确定起点和每个部分的长度和创建别名。
开始部分头命令行= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 1 Ip: 1 - 9头9 10 Icmp: 10 - 18头-18 |尾9 19 IcmpMsg: 19头-21 |尾3 22 Tcp: 22-32头-32 |尾-11 33 Udp: 33-40头-40 |尾8 41 UdpLite: 41-41头-41 |尾1 42 TcpExt: 42 - 92头-88 |尾-47 93 IpExt: 93 - -99 | 103头尾-11 104 MPTcpExt: -100 |尾1 104 - 104头
在这之后,这是很容易构造这样的别名,因为我知道每个部分开始和结束的地方。
Ip别名= ' netstat - s |头9 '别名Icmp =“netstat - s -18 | |头尾9”
另一方面,知道每个部分的行数可能不总是相同的,我转而去构建一个脚本,该脚本将构建我的别名。这个脚本是一个关键组成部分情况下声明,其中包含命令运行的每个部分netstat - s输出。
注意,每个部分的脚本收集其起点和终点计算之前的协议(开始前的线)。只有MPTcpExt部分定义了自己的别名,并通过计算行包含的文件netstat - s输出。
# !/bin/bash #保存netstat - s输出文件netstat - s > netstat-s #计数线行=“wc - l netstat-s | awk的{打印1美元}“n = 0在IFS =读- r线做((n = n + 1) w =“echo $行| wc - w '如果(w = = 1美元);然后# echo $ $ n行协议=“echo $行| sed的s /: / / ' '情况下美元协议的Ip) Ip = $ n;;Icmp) Icmp = $ n;Ip2 = expr $ n - 1”;回声别名IP = " netstat - s |头- Ip2美元”;;IcmpMsg) IcmpMsg = $ n;Icmp2 = expr n - 1美元的len = expr IcmpMsg - Icmp美元”;回声别名Icmp = "负责人netstat - s | - $ Icmp2 |尾巴-莱恩的美元”;;Tcp) Tcp = $ n; IcmpMsg2=`expr $n - 1`; len=`expr $Tcp - $IcmpMsg`; echo alias IcmpMsg="'netstat -s | head -$IcmpMsg2 | tail -$len'";; Udp) Udp=$n; Tcp2=`expr $n - 1`; len=`expr $Udp - $Tcp`; echo alias Tcp="'netstat -s | head -$Tcp2 | tail -$len'";; UdpLite) UdpLite=$n; Udp2=`expr $n - 1`; len=`expr $UdpLite - $Udp`; echo alias Udp="'netstat -s | head -$Udp2 | tail -$len'";; TcpExt) TcpExt=$n; UdpLite2=`expr $n - 1`; len=`expr $TcpExt - $UdpLite`; echo alias UdpLite="'netstat -s | head -$UdpLite2 | tail -$len'";; IpExt) IpExt=$n; TcpExt2=`expr $n - 1`; len=`expr $IpExt - $TcpExt`; echo alias TcpExt="'netstat -s | head -$TcpExt2 | tail -$len'";; MPTcpExt) MPTcpExt=$n; IpExt2=`expr $n - 1`; len=`expr $MPTcpExt - $IpExt`; echo alias IpExt="'netstat -s | head -$IpExt2 | tail -$len'"; len=`expr $n - $MPTcpExt + 1`; echo alias MPTcpExt="'netstat -s | head -$MPTcpExt | tail -$len'";; # rest=`expr $lines - $MPTcpExt`; echo $rest;; esac fi done < netstat-s
在运行脚本,我得到以下输出——一个别名列表,然后我添加到我的~ / . bashrc文件,并根据需要重新生成。他们可以被添加到一个单独的文件,我每当我想使用他们。
IP别名= ' netstat - s |头9 '别名Icmp =“netstat - s -18 | |头尾9”别名IcmpMsg = ' netstat - s -21 | |头尾3 '别名Tcp = netstat - s -11 | -32 |头尾的别名Udp =“netstat - s -40 | |头尾8”别名UdpLite = ' netstat - s -41 | |头尾1 '别名TcpExt = netstat - s -51 | -92 |头尾的别名IpExt = netstat - s -11 | -103 |头尾的别名MPTcpExt = ' netstat - s -104 | |头尾1 '
使用别名可以允许我看的任何部分netstat - s命令很容易。注意,你应该期待看到巨大的变化每次你使用这些别名,因为连接和数据包数量的增长非常迅速。此外,由于线路的数量netstat - s不一定会保持不变,再生的别名是一个好主意。
这里有一些例子的输出别名将提供:
$ Ip Ip:转发:2 511618总包与无效的地址收到了159 0 0传入的数据包丢弃502163转发的数据包交付了247145美元下跌Tcp请求发送2出站数据包Tcp: 5124活跃连接开口26被动连接开口连接尝试失败0 6连接重置收到1连接建立了333116段收到235631段发送519部分转播的6个坏的部分接收发送重置3558 Udp Udp: 111008包收到6未知端口接收数据包0数据包接收错误12794包发送0 0发送缓冲区接收缓冲区错误错误IgnoredMulti: 58026
总结
的netstat命令提供了大量的网络数据。与- s选项,它显示网络统计在9个不同的类别。别名包含在这篇文章应该熟悉这些统计数据变得更加容易。