最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux服務(wù)器網(wǎng)卡流量查看方法 shell和Python各一枚

 更新時間:2016年10月25日 14:34:25   作者:kaifly  
這篇文章主要為大家詳細介紹了Linux服務(wù)器網(wǎng)卡流量查看方法,shell和Python各一例,具有一定的參考價值,感興趣的小伙伴們可以參考一下

有時我們需要較為實時的查看服務(wù)器上的網(wǎng)卡流量,這里我寫了兩個小腳本,一個用shell(先寫的,一次只能查看一個網(wǎng)卡),另一個用Python(后寫的,一次可查看多個網(wǎng)卡)。

腳本中都用了while true“死循環(huán)”,每隔10s從“/proc/net/dev”中取一次值并根據(jù)10s內(nèi)的差值計算10s內(nèi)的平均帶寬;按ctrl+c停止執(zhí)行。腳本兼容centos6和7

兩個腳本都不太復(fù)雜,而且腳本中注釋也比較細致,所以我就不過多解釋腳本內(nèi)容了。

直接上圖上腳本:

shell版–使用截圖:

image 

shell版代碼:

#!/bin/sh
#by ljk 20160526

if [ "$1" = "" ];then  #判斷后面是否有跟參數(shù)
  echo -e "\n   use interface_name after the script,like \"script eth0\"...\n"
  exit -1
fi

echo -e "\n   start monitoring the $1,press \"ctrl+c\" to stop"
echo ----------------------------------------------------------

file=/proc/net/dev  #內(nèi)核網(wǎng)卡信息文件
while true
  do
  RX_bytes=`cat $file|grep $1|sed 's/^ *//g'|awk -F'[ :]+' '{print $2}'`  #這里sed這一步為了同時兼容centos6和7
  TX_bytes=`cat $file|grep $1|sed 's/^ *//g'|awk -F'[ :]+' '{print $10}'`
  sleep 10
  RX_bytes_later=`cat $file|grep $1|sed 's/^ *//g'|awk -F'[ :]+' '{print $2}'`
  TX_bytes_later=`cat $file|grep $1|sed 's/^ *//g'|awk -F'[ :]+' '{print $10}'`

  #B*8/1024/1024=Mb
  speed_RX=`echo "scale=2;($RX_bytes_later - $RX_bytes)*8/1024/1024/10"|bc`
  speed_TX=`echo "scale=2;($TX_bytes_later - $TX_bytes)*8/1024/1024/10"|bc`

  printf "%-3s %-3.1f %-10s %-4s %-3.1f %-4s\n" IN: $speed_RX Mb/s OUT: $speed_TX Mb/s
done

Python版–使用截圖:

image

image

image

Python版代碼:

#!/bin/env python3 
#by ljk 20160526 

import os,re,sys,time 

if len(sys.argv) == 1: 
  print('\n使用方法:請跟上網(wǎng)卡名稱,可接"單個網(wǎng)卡"/"多個網(wǎng)卡,以空格分開".\n') 
  sys.exit(100) 
else: 
  print('start monitoring,press "ctrl+c" to stop\n') 

  for arg in sys.argv[1:]:  #輸出標(biāo)頭 
    header = '------{} bandwidth(Mb/s)------'.format(arg) 
    print(header.ljust(35),end='') 
  print() 

  #global values_dic 
  values_dic = {}  #定義空字典,用來在下面函數(shù)中存放各網(wǎng)卡的各項需要用到的值 

  def get_values(orders): 
    try: 
      with open('/proc/net/dev') as f: 
        lines=f.readlines()  #內(nèi)容不多,一次性讀取較方便 
        for arg in sys.argv[1:]: 
          for line in lines: 
            line=line.lstrip()  #去掉行首的空格,以便下面split 
            if re.match(arg,line): 
              values = re.split("[ :]+",line)  #以空格和:作為分隔符 
              values_dic[arg+'r'+orders]=values[1]  #1為接收值 
              values_dic[arg+'t'+orders]=values[9]  #9為發(fā)送值 
              #return [values[1],values[9]]  #可返回列表 
    except (FileExistsError,FileNotFoundError,PermissionError): 
      print('open file error') 
      sys.exit(-1) 

  try: 
    while True: 
      get_values('first')  #第一次取值 
      time.sleep(10) 
      get_values('second')  #10s后第二次取值 

      for arg in sys.argv[1:]: 
        r_bandwidth = (int(values_dic[arg+'r'+'second']) - int(values_dic[arg+'r'+'first']))/1024/1024/10*8 
        t_bandwidth = (int(values_dic[arg+'t'+'second']) - int(values_dic[arg+'t'+'first']))/1024/1024/10*8 
        print('IN: '+str(round(r_bandwidth,2)).ljust(8)+' OUT: '+str(round(t_bandwidth,2)).ljust(16),end='') 

      print() 
      values_dic = {}  #清空本次循環(huán)后字典的內(nèi)容 
  except KeyboardInterrupt: 
    print("\n-----bye-----") 

這倆腳本使用起來都還是很方便實用的,共享出來希望能給朋友們工作中帶來一點方便。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

安溪县| 霍州市| 宿州市| 东阿县| 洛南县| 冷水江市| 五峰| 体育| 双桥区| 儋州市| 沭阳县| 宝坻区| 府谷县| 苍山县| 岚皋县| 霍林郭勒市| 镶黄旗| 贵港市| 博湖县| 义乌市| 绵阳市| 盐池县| 芮城县| 丹阳市| 新宁县| 汕头市| 怀宁县| 惠东县| 顺昌县| 武穴市| 丰顺县| 岢岚县| 项城市| 义马市| 吉首市| 繁昌县| 栖霞市| 阳高县| 哈巴河县| 临夏县| 富宁县|