一丶需求
1.已知在/proc/net/dev文件中可以查看到网卡时时流量信息,请根据这个文件的数据书写脚本来监控对外网卡的实时流量数据
2.要求用注释表明每行代码的作用和意义
二丶编写程序
#设定网卡名
INTERFACE="eth0"
#设置检查间隔时间
INTERVAL=1
#设定函数interface_stats从/proc/net/dev中获取网卡的数据流量
interface_stats(){
#获取进出的数据量
interface="$1"
ru_bytes_proc=$(awk "/$INTERFACE/{print \$2}" /proc/net/dev)
chu_bytes_proc=$(awk "/$INTERFACE/{print \$10}" /proc/net/dev)
#获取$INTERCAL秒后进出的数据量
sleep $INTERVAL
ru_bytes_diff=$(awk "/$INTERFACE/{print \$2}" /proc/net/dev)
chu_bytes_diff=$(awk "/$INTERFACE/{print \$10}" /proc/net/dev)
#在这一瞬此网卡出入的数据量为
ru_bytes_diff=$((ru_bytes_curr - ru_bytes_prev))
chu_bytes_diff=$((chu_bytes_curr - chu_bytes_prev))
#打印出数据,打印xxx为红色 \003[31m xxx \003[0m
echo -e "\033[31m $ru_bytes_diff bytes/sec \033[0m"
echo -e "\033[31m $chu_bytes_diff bytes/sec \033[0m"
}
#主循环,不断检查并打印数据流量
while true;do
echo "$monitoring traffic on $INTERFACE ever $INTERVAL seconds"
interface_stats "$INTERFACE" #引用函数
sleep $INTERVAL #函数循环等待n秒
done
三丶测试
[root@server100 lianxi]# sh check.sh
traffic on eth0 ever 1 seconds
64 bytes/sec
102 bytes/sec
traffic on eth0 ever 1 seconds
128 bytes/sec
102 bytes/sec
traffic on eth0 ever 1 seconds
128 bytes/sec
102 bytes/sec
traffic on eth0 ever 1 seconds
128 bytes/sec
102 bytes/sec