自动监控网卡数据量

一丶需求

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖虎不是胖虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值