在Linux系统软件实际操作中,可应用专用工具监控网络流量,但对髙速互联网的监控有一定的局限,针对髙速网络流量的监控可应用shell脚本,一个很精巧的shell脚本,应用ifconfig的连续輸出来统计分析网口的总流量,有必须的盆友能够参照下。
在文中中大家详细介绍一种简易的Shell 脚本,它能够监控网络流量并且不依赖于迟缓的libpcap库。这种脚本适用Gb之上经营规模的髙速网络接口,假如你对“聚集型”的网络流量很感兴趣得话,他们可统计分析每一个网络接口上的总流量。
脚本主要是根据sysfs虚似系统文件,它是由核心用于将机器设备或驱动器有关的信息内容輸出到客户室内空间的一种体制。网络接口的有关分析数据会根据“/sys/class/net/《ethX》/statistics”輸出。
举个事例,eth0的网络接口上剖析研讨会輸出到这种文档中:
/sys/class/net/eth0/statistics/rx_packets: 接到的数据包数据信息
/sys/class/net/eth0/statistics/tx_packets: 传送的数据包总数
/sys/class/net/eth0/statistics/rx_bytes: 接受的字节
/sys/class/net/eth0/statistics/tx_bytes: 传送的字节
/sys/class/net/eth0/statistics/rx_dropped: 当接到包数据包降低的数据量
/sys/class/net/eth0/statistics/tx_dropped: 传送包数据包降低的数据量
这种数据信息会依据核心数据信息产生变动的情况下自动更新。因而,你能撰写一系列的脚本开展剖析并测算流量监控。下边就这样的脚本(谢谢 joemiller 出示)。第一个脚本是统计分析每秒钟数据量,包括接受(RX)或推送(TX)。而后边的则是一个叙述数据传输中的接受(RX)推送(TX)网络带宽。这种脚本中安裝不用一切的专用工具。
精确测量网络接口每秒钟数据包:
#!/bin/bash
INTERVAL=“1” # update interval in seconds
if [ -z “$1” ]; then
echo
echo usage: $0 [network-interface]
echo
echo e.g. $0 eth0
echo
echo shows packets-per-second
exit
fi
IF=$1
while true
do
R1=`cat /sys/class/net/$1/statistics/rx_packets`
T1=`cat /sys/class/net/$1/statistics/tx_packets`
sleep $INTERVAL
R2=`cat /sys/class/net/$1/statistics/rx_packets`
T2=`cat /sys/class/net/$1/statistics/tx_packets`
TXPPS=`expr $T2 - $T1`
RXPPS=`expr $R2 - $R1`
echo “TX $1: $TXPPS pkts/s RX $1: $RXPPS pkts/s”
done
热搜词