shell 监控网卡流量

需要统计网卡流量,除了依赖其他第三方的统计外,只能自己写了,原因你懂吧?:),因为生产环境没办法啊,只能自己写啊,悲催哇。

这个是统计packets的信息,可能1和9会更准一些,不过我也不清楚了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
eth=$1
mkdir -p /home/tmsp
while [ "1" ]
RXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}')
TXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}')
sleep 1
do
RXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}')
TXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}')
ctime=$(date "+%Y-%m-%d %H:%M:%S")
RX=$((${RXnext}-${RXpre}))
TX=$((${TXnext}-${TXpre}))
echo "$ctime|RX:$RX|TX:$TX|TRX:$RXnext|TTX:$TXnext" >> /home/tmsp/$1.log
sleep 1
done

这个是简单的记录信息,那么需要后续的工作还很多,比如脚本切割,比如话单入库等等,后续完善吧。

PS:最后补充如何运行,如果你保存为 nic.sh 先给执行权限chmod +x nic.sh 然后运行,./nic.sh eth0 参数是你想要监控的网卡信息。

不足之处,不能监控到具体的端口,目前迷惘中。欢迎指点。