欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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:]:  #輸出標頭 
    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)文章

  • 教大家?guī)追N在Linux系統(tǒng)中查看時區(qū)的方法

    教大家?guī)追N在Linux系統(tǒng)中查看時區(qū)的方法

    Linux 包含多種可用的時間管理工具,比如 date 或 timedatectlcommands,你可以用它們來獲取當前系統(tǒng)時區(qū),也可以將系統(tǒng)時間與 NTP 服務(wù)器同步,來自動地、更精確地進行時間管理。下面通過這篇文章來一起看看在Linux系統(tǒng)中查看時區(qū)的幾種不同方法。
    2017-01-01
  • Apache?Doris基礎(chǔ)簡介

    Apache?Doris基礎(chǔ)簡介

    Apache?Doris?是一個現(xiàn)代化的?MPP(Massively?Parallel?Processing,即大規(guī)模并行處理)分析型數(shù)據(jù)庫產(chǎn)品,這篇文章主要介紹了Apache-Doris基礎(chǔ)概念,需要的朋友可以參考下
    2024-03-03
  • Linux上創(chuàng)建、列出、刪除Docker容器方法總結(jié)

    Linux上創(chuàng)建、列出、刪除Docker容器方法總結(jié)

    在本篇文章中小編給大家整理了一篇關(guān)于Linux上創(chuàng)建、列出、刪除Docker容器方法和技巧,需要的朋友們學(xué)習(xí)參考下。
    2019-03-03
  • Linux/Unix關(guān)于時間和時間戳的命令行

    Linux/Unix關(guān)于時間和時間戳的命令行

    這篇文章主要介紹了Linux/Unix關(guān)于時間和時間戳的命令行以及輸出的樣式區(qū)別,一起來學(xué)習(xí)下吧。
    2017-12-12
  • Linux paste命令的使用方法

    Linux paste命令的使用方法

    這篇文章主要介紹了Linux paste命令的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Linux學(xué)習(xí)第二篇 Java環(huán)境安裝配置教程

    Linux學(xué)習(xí)第二篇 Java環(huán)境安裝配置教程

    這篇文章主要為大家詳細介紹了Linux學(xué)習(xí)第二篇,Java環(huán)境安裝配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • CentOS7 下安裝telnet服務(wù)的實現(xiàn)方法

    CentOS7 下安裝telnet服務(wù)的實現(xiàn)方法

    這篇文章主要介紹了CentOS7 下安裝telnet服務(wù)的實現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家實現(xiàn)這樣功能的方法,需要的朋友可以參考下
    2017-10-10
  • Linux設(shè)置虛擬內(nèi)存的教學(xué)與實戰(zhàn)教程

    Linux設(shè)置虛擬內(nèi)存的教學(xué)與實戰(zhàn)教程

    這篇文章主要給大家介紹了關(guān)于Linux設(shè)置虛擬內(nèi)存教學(xué)與實戰(zhàn)的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • linux服務(wù)器磁盤擴容的方法(圖)

    linux服務(wù)器磁盤擴容的方法(圖)

    如果你的linux服務(wù)器磁盤不夠用了,那就需要給磁盤擴容了,下面我們介紹一下linux服務(wù)器磁盤擴容的方法,大家參考使用吧
    2014-01-01
  • linux解決ping通但端口不通的問題

    linux解決ping通但端口不通的問題

    在本文里我們給大家整理了關(guān)于在linux解決ping通但端口不通的問題的解決方法和步驟,有需要的朋友們參考下。
    2018-09-09

最新評論