国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Linux服務器 > 正文

Linux服務器網卡流量查看方法 shell和Python各一枚

2024-09-05 23:02:43
字體:
來源:轉載
供稿:網友

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

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

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

直接上圖上腳本:

shell版–使用截圖:

Linux服務器網卡流量查看,Linux服務器流量查看,Linux流量查看,shell查看網卡流量

shell版代碼:

#!/bin/sh#by ljk 20160526if [ "$1" = "" ];then  #判斷后面是否有跟參數  echo -e "/n   use interface_name after the script,like /"script eth0/".../n"  exit -1fiecho -e "/n   start monitoring the $1,press /"ctrl+c/" to stop"echo ----------------------------------------------------------file=/proc/net/dev  #內核網卡信息文件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/sdone

Python版–使用截圖:

Linux服務器網卡流量查看,Linux服務器流量查看,Linux流量查看,shell查看網卡流量

Linux服務器網卡流量查看,Linux服務器流量查看,Linux流量查看,shell查看網卡流量

Linux服務器網卡流量查看,Linux服務器流量查看,Linux流量查看,shell查看網卡流量

Python版代碼:

#!/bin/env python3 #by ljk 20160526 import os,re,sys,time if len(sys.argv) == 1:   print('/n使用方法:請跟上網卡名稱,可接"單個網卡"/"多個網卡,以空格分開"./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 = {}  #定義空字典,用來在下面函數中存放各網卡的各項需要用到的值   def get_values(orders):     try:       with open('/proc/net/dev') as f:         lines=f.readlines()  #內容不多,一次性讀取較方便         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為發送值               #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 = {}  #清空本次循環后字典的內容   except KeyboardInterrupt:     print("/n-----bye-----") 

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庐江县| 仁寿县| 武宣县| 大同县| 洛扎县| 紫金县| 新竹市| 清原| 原阳县| 龙游县| 阿图什市| 张北县| 高要市| 库尔勒市| 天等县| 扎鲁特旗| 沅陵县| 泾川县| 司法| 双鸭山市| 高安市| 宜章县| 黄浦区| 洞头县| 巴林右旗| 齐河县| 莲花县| 巴里| 德保县| 哈密市| 固镇县| 平安县| 宝山区| 紫金县| 大化| 隆德县| 金川县| 济阳县| 隆尧县| 石林| 营山县|