yui 发表于 2018-8-19 13:20:42

Shell脚本监控网卡流量

  说明:此脚本可以监控Linux系统下网卡流量,其中的注释信息本人用多个减号“-”划分开,为了方便这一块功能代码的表示。大家可以下载自己任意修改此脚本。本人属于一级笨鸟级别,希望大家能对脚本不足的地方给出评价。谢谢啦O(∩_∩)O~
  #!/bin/bash
  band () {
  while true
  do
  rx1=$(cat /proc/net/dev | grep "eth0" | tr : " " | awk '{print $2}')
  tx1=$(cat /proc/net/dev | grep "eth0" | tr : " " | awk '{print $10}')
  sleep 1
  rx2=$(cat /proc/net/dev | grep "eth0" | tr : " " | awk '{print $2}')
  tx2=$(cat /proc/net/dev | grep "eth0" | tr : " " | awk '{print $10}')
  clear
  rxdiffer=$(($rx2 - $rx1))
  txdiffer=$(($tx2 - $tx1))
  #-----------INT KB/MB------
  RRXKB=$(($rxdiffer/1024))
  TTXKB=$(($txdiffer/1024))
  RRXMB=$(($RRXKB/1024))
  TTXMB=$(($TTXKB/1024))
  #-------------------------------
  #sleep 1
  #---------------precision KB/MB---------------------
  RXKB=$(awk 'BEGIN {print ('$rxdiffer'/1024)}')
  TXKB=$(awk 'BEGIN {print ('$txdiffer'/1024)}')
  RXMB=$(awk 'BEGIN {print ('$RXKB/1024')}')
  TXMB=$(awk 'BEGIN {print ('$TXKB/1024')}')
  #+++other count precision method+++
  #RXKB=$(echo "scale=2;${rxdiffer}/1024" | bc)
  #TXKB=$(echo "scale=2;${txdiffer}/1024" | bc)
  #++++++++++++++++++++++++++++++++++
  #---------------------------------------------------
  #---------judge KB/MB--------------
  if [ $RRXKB -lt 1024 ]; then
  unit1="Kibp/s"
  else
  unit1="Mibp/s"
  RXKB="$RXMB"
  fi
  if [ $TTXKB -lt 1024 ]; then
  unit2="Kibp/s"
  else
  unit2="Mibp/s"
  TXKB="$TXMB"
  fi
  #-----------------------------------
  #sleep 1
  echo -e $(date +%T;echo "-";date +%F;echo ">";echo "bandwidth")
  printf "\n"
  echo "IN_bandwidth: $rxdiffer /Byte"
  echo "OUT_bandwidth: $txdiffer /Byte"
  #-------------------other input medthod-------------------
  #echo -e $(date +%T)
  #echo -e "------------------------------------------------"
  #echo -e "\t IN_bandwidth \t\t OUT_bandwidth"
  #echo -e "\t ${RXKB} /$unit1 \t\t ${TXKB} /$unit2"
  #echo -e "------------------------------------------------"
  #---------------------------------------------------------
  printf "%s\n" "--------------------------------------------------"
  printf "\t%s\t" "IN_Bandwidth"
  printf "\t%s\t\n" "OUT_Bandwidth"
  printf "\n"
  printf "   %10.2f /$unit1" "$RXKB"
  printf "\t   %10.2f /$unit2\n" "$TXKB"
  printf "%s\n" "--------------------------------------------------"
  done
  }
  band

页: [1]
查看完整版本: Shell脚本监控网卡流量