前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux网卡流量统计工具

Linux网卡流量统计工具

作者头像
一见
发布2018-08-06 19:22:47
3.2K0
发布2018-08-06 19:22:47
举报
文章被收录于专栏:蓝天蓝天

flux.zip(下载上传后,记得chmod +x flux.sh增加可执行权限)

  1. #!/bin/sh
  2. # 流量统计工具
  3. # 可带一个参数:网卡名,如eth0或eth1等
  4. # 输出格式:统计时间,入流量(Kbps),入流量(Mbps),出流量(Kbps),出流量(Mbps)
  5. # Please edit the followings
  6. EthXname=eth0 # Interface name
  7. StatFreq=2 # Seconds
  8. if test $# -eq 1; then
  9. EthXname=$1
  10. fi
  11. echo "Destination: $EthXname"
  12. # Don't change
  13. influx_kbps=0
  14. outflux_kbps=0
  15. influx_mbps=0
  16. outflux_mbps=0
  17. unsigned_long_max=4294967295
  18. # 检查是否存在EthXname
  19. Ethname=`cat /proc/net/dev|grep $EthXname|awk -F"[: ]+" '{ printf("%s", $2); }'`
  20. if test "$EthXname" != "$Ethname"; then
  21. echo "Please set EthXname first before running"
  22. echo "Usage: flux.sh ethX"
  23. echo "Example: flux.sh eth0"
  24. exit 1
  25. fi
  26. # 进一步检查是否存在EthXname
  27. netstat -ie|grep $EthXname> /dev/null 2>&1
  28. if test $? -ne 0; then
  29. echo "Please set EthXname first before running"
  30. echo "Usage: flux.sh ethX"
  31. echo "Example: flux.sh eth0"
  32. exit 1
  33. fi
  34. # 初始化
  35. influx1_byte=`cat /proc/net/dev|grep $EthXname|awk -F"[: ]+" '{ printf("%d", $3); }'`
  36. outflux1_byte=`cat /proc/net/dev|grep $EthXname|awk -F"[: ]+" '{ printf("%d", $11); }'`
  37. echo "Date,IN-Kbps,IN-Mbps,OUT-Kbps,OUT-Mbps"
  38. while test 2 -gt 1;
  39. do
  40. sleep $StatFreq
  41. #influx2_byte=`cat /proc/net/dev|grep $EthXname|awk -F"[: ]+" '{ printf("%d", $3); }'`
  42. #outflux2_byte=`cat /proc/net/dev|grep $EthXname|awk -F"[: ]+" '{ printf("%d", $11); }'`
  43. inout_bytes=`awk -F"[: ]+" /$EthXname/'{ printf("%s %s", $3, $11) }' /proc/net/dev`
  44. inout_bytes_array=($inout_bytes)
  45. influx2_byte=${inout_bytes_array[0]}
  46. outflux2_byte=${inout_bytes_array[1]}
  47. dd=`date +'%Y-%m-%d/%H:%M:%S'`
  48. if test $influx2_byte -ge $influx1_byte; then
  49. let influx_byte=$influx2_byte-$influx1_byte
  50. else
  51. let influx_byte=$unsigned_long_max-$influx1_byte
  52. let influx_byte=$influx_byte+$influx2_byte
  53. fi
  54. if test $outflux2_byte -ge $outflux1_byte; then
  55. let outflux_byte=$outflux2_byte-$outflux1_byte
  56. else
  57. let outflux_byte=$unsigned_long_max-$outflux1_byte
  58. let outflux_byte=$outflux_byte+$outflux2_byte
  59. fi
  60. let influx_byte=$influx_byte/$StatFreq
  61. let outflux_byte=$outflux_byte/$StatFreq
  62. # TO bps
  63. let influx_bps=$influx_byte*8
  64. let outflux_bps=$outflux_byte*8
  65. # To kbps
  66. let influx_kbps=$influx_bps/1024
  67. let outflux_kbps=$outflux_bps/1024
  68. # To mbps
  69. let influx_mbps=$influx_kbps/1024
  70. let outflux_mbps=$outflux_kbps/1024
  71. # SHOW on screen
  72. # COLUMN: Date,IN-Kbps,IN-Mbps,OUT-Kbps,OUT-Mbps
  73. echo "$dd,${influx_kbps}Kbps,${influx_mbps}Mbps,${outflux_kbps}Kbps,${outflux_mbps}Mbps"
  74. let influx1_byte=influx2_byte
  75. let outflux1_byte=outflux2_byte
  76. done
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-08-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档