日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

查看Linux服务器网卡流量小脚本shell和Python各一例

發布時間:2025/7/14 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 查看Linux服务器网卡流量小脚本shell和Python各一例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? 有時我們需要較為實時的查看服務器上的網卡流量,這里我寫了兩個小腳本,一個用shell(先寫的,一次只能查看一個網卡),另一個用Python(后寫的,一次可查看多個網卡)。腳本中都用了while true“死循環”,每隔10s從“/proc/net/dev”中取一次值并根據10s內的差值計算10s內的平均帶寬;按ctrl+c停止執行。腳本兼容centos6和7

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

shell版--使用截圖:

shell版代碼:

#!/bin/sh #by?ljk?20160526if?[?"$1"?=?""?];then????#判斷后面是否有跟參數echo?-e?"\n??????use?interface_name?after?the?script,like?\"script?eth0\"...\n"exit?-1 fiecho?-e?"\n??????start?monitoring?the?$1,press?\"ctrl+c\"?to?stop" echo?----------------------------------------------------------file=/proc/net/dev????#內核網卡信息文件 while?truedoRX_bytes=`cat?$file|grep?$1|sed?'s/^?*//g'|awk?-F'[?:]+'?'{print?$2}'`????#這里sed這一步為了同時兼容centos6和7TX_bytes=`cat?$file|grep?$1|sed?'s/^?*//g'|awk?-F'[?:]+'?'{print?$10}'`sleep?10RX_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=Mbspeed_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版--使用截圖:



Python版代碼:

#!/bin/env?python3 #by?ljk?20160526import?os,re,sys,timeif?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_dicvalues_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()????#去掉行首的空格,以便下面splitif?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*8t_bandwidth?=?(int(values_dic[arg+'t'+'second'])?-?int(values_dic[arg+'t'+'first']))/1024/1024/10*8print('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-----")

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

轉載于:https://blog.51cto.com/kaifly/1783530

總結

以上是生活随笔為你收集整理的查看Linux服务器网卡流量小脚本shell和Python各一例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。