歡迎您光臨本站 註冊首頁

用腳本實時顯示Linux網路流量

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  在GUI下面,有一大把的工具可以顯示網路流量,那麼,命令行下面怎麼辦?

顯然辦法是有的,比如,ifconfig,會有這樣的輸出:
          RX bytes:1224128649 (1.1 GiB)  TX bytes:34114947 (32.5 MiB)

過一會再看,數值有所變化,兩者的差值就是過去一段時間的流量。可是,這也太不人性化了……

正所謂自己動手,豐衣足食,我們自己來寫一個腳本,實時顯示並刷新!

腳本如下,還是哪句話,本人功力有限,寫腳本的原則是夠用就好。
#!/bin/bash

if [ -n "$1" ]; then
  eth_name=$1
else
  eth_name="eth0"
fi

i=0

send_o=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`
recv_o=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`
send_n=$send_o
recv_n=$recv_o

while [ $i -le 100000 ]; do
  send_l=$send_n
  recv_l=$recv_n
  sleep 1
  send_n=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`
  recv_n=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`
  i=`expr $i + 1`
  send_r=`expr $send_n - $send_l`
  recv_r=`expr $recv_n - $recv_l`
  total_r=`expr $send_r + $recv_r`
  send_ra=`expr \( $send_n - $send_o \) / $i`
  recv_ra=`expr \( $recv_n - $recv_o \) / $i`
  total_ra=`expr $send_ra + $recv_ra`
  sendn=`ifconfig $eth_name | grep bytes | awk -F \( '{print $3}' | awk -F \) '{print $1}'`
  recvn=`ifconfig $eth_name | grep bytes | awk -F \( '{print $2}' | awk -F \) '{print $1}'`
  clear
  echo  "Last second  :   Send rate: $send_r Bytes/sec  Recv rate: $recv_r Bytes/sec  Total rate: $total_r Bytes/sec"
  echo  "Average value:   Send rate: $send_ra Bytes/sec  Recv rate: $recv_ra Bytes/sec  Total rate: $total_ra Bytes/sec"
  echo  "Total traffic after startup:    Send traffic: $sendn  Recv traffic: $recvn"
done

該腳本(假設名叫traffic)默認顯示eth0的流量,如果你有多個網卡,請將網卡作為參數傳進去,比如:
./traffic  eth1

運行結果如下:


[火星人 ] 用腳本實時顯示Linux網路流量已經有425次圍觀

http://coctec.com/docs/program/show-post-71648.html