job-网卡流量监控

案例需求

网卡发送和就收数据量监控,按秒统计。
思考: 如何获取某块网卡上一秒的流入、流出数据流量
ifconfig中可以获得,你知道吗?
29-shell脚本案例-监控网卡流量 - 图1

脚本应用场景:

动态监控网卡的流量

解决问题

实时掌握网卡的流量,掌握带宽使用情况

脚本思路

1、获得网卡当前流入流出总量
2、休息一秒
3、获得网卡当前流入流出总量
4、运算得出上一秒网卡流量
5、输出结果

实现代码

  1. #!/bin/bash
  2. #
  3. #Author: www.zutuanxue.com
  4. #Created Time:
  5. #Release:
  6. #Description: 网卡流量监控
  7. #脚本用法
  8. #判断用户是否传参
  9. if [ -z "$1"] || [ "$1" == "--help" ];then
  10. cat << EOF
  11. $0 网卡名称
  12. --help 打印帮助菜单
  13. EOF
  14. fi
  15. #如果用户没有传参,则退出脚本
  16. [ $# -lt 1 ]&&exit 1
  17. #第一次取值
  18. #1、获得当前网卡流量 初始化值
  19. NIC_RX=`ifconfig $1|grep "RX packets"|tr -s " "|cut -d " " -f6`
  20. NIC_TX=`ifconfig $1|grep "TX packets"|tr -s " "|cut -d " " -f6`
  21. #休息一秒开始循环
  22. sleep 1
  23. #循环开始监控网卡流量 监控频率 1s
  24. while :
  25. do
  26. #2、监控当前网络的流量,第二次取值
  27. NIC_RX_1=`ifconfig $1|grep "RX packets"|tr -s " "|cut -d " " -f6`
  28. NIC_TX_1=`ifconfig $1|grep "TX packets"|tr -s " "|cut -d " " -f6`
  29. #3、制作输出
  30. #3.1、清屏输出下文
  31. clear
  32. echo -e "\t$1 网卡流量监控"
  33. echo "----------------------------------------"
  34. echo -e "网卡: $1\n"
  35. #3.2、运算得出结论
  36. echo -e "发送:\t$((NIC_TX_1-NIC_TX))B/s\t接收:\t$((NIC_RX_1-NIC_RX))B/s"
  37. #重新赋值网卡初始化流入流出变量
  38. NIC_RX=$NIC_RX_1
  39. NIC_TX=$NIC_TX_1
  40. #休眠1秒,进入下一次循环
  41. sleep 1
  42. done