Linux下统计网络速率
本文是我在网络发现当时记录在本地,但已不知处处,如有侵权,请联系删除
实现思路:
读取arp文件,列出所有客户的MAC,然后把用户增加到UPLOAD和DOWNLOAD的target中,隔一秒后读取target中流量信息。
1 #!/bin/sh 2 echo "Collecting data..." 3 echo "" 4 cat /proc/net/arp | grep : | grep ^192 | grep -v 00:00:00:00:00:00 | awk '{print $1}' > mac-ip 5 iptables -N UPLOAD 6 iptables -N DOWNLOAD 7 while read line;do iptables -I FORWARD 1 -s $line -j UPLOAD;done < mac-ip 8 while read line;do iptables -I FORWARD 1 -d $line -j DOWNLOAD;done < mac-ip 9 sleep 1 10 echo "Download speed:" 11 echo "" 12 iptables -nvx -L FORWARD | grep DOWNLOAD | awk '{print $2/1024/1" KB/s ",$1/10" packets/s", $9}' | sort -n -r 13 echo "" 14 echo "Upload speed:" 15 echo "" 16 iptables -nvx -L FORWARD | grep UPLOAD | awk '{print $2/1024/1" KB/s ",$1/10" packets/s", $8}' | sort -n -r 17 18 while read line;do iptables -D FORWARD -s $line -j UPLOAD;done < mac-ip 19 while read line;do iptables -D FORWARD -d $line -j DOWNLOAD;done < mac-ip 20 iptables -X UPLOAD 21 iptables -X DOWNLOAD