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

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

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

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

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

兩個(gè)腳本都不太復(fù)雜,而且腳本中注釋也比較細(xì)致,所以我就不過多解釋腳本內(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這一步為了同時(shí)兼容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使用方法:請(qǐng)跟上網(wǎng)卡名稱,可接"單個(gè)網(wǎng)卡"/"多個(gè)網(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)卡的各項(xià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-----") 

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

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

相關(guān)文章

最新評(píng)論

甘德县| 双流县| 高碑店市| 岚皋县| 涿鹿县| 内乡县| 台北市| 宁乡县| 灵石县| 始兴县| 海城市| 泌阳县| 甘孜县| 新兴县| 伊宁县| 静安区| 集贤县| 陆川县| 乌海市| 连平县| 右玉县| 武汉市| 新蔡县| 晋城| 柳州市| 惠水县| 南平市| 阜平县| 靖江市| 文山县| 兴文县| 磴口县| 霍山县| 柳江县| 衡山县| 博爱县| 辽阳市| 卢龙县| 潼关县| 西昌市| 辽阳县|