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版–使用截圖:
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版–使用截圖:



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í)有所幫助,也希望大家多多支持腳本之家。
- 如何把python項目部署到linux服務(wù)器
- Pycharm使用遠程linux服務(wù)器conda/python環(huán)境在本地運行的方法(圖解))
- Linux服務(wù)器上安裝Python3的兩種方式
- python 讀取Linux服務(wù)器上的文件方法
- python和shell監(jiān)控linux服務(wù)器的詳細代碼
- 詳解Python下ftp上傳文件linux服務(wù)器
- Linux下安裝Python3和django并配置mysql作為django默認服務(wù)器方法
- Linux下將Python的Django項目部署到Apache服務(wù)器
- python下paramiko模塊實現(xiàn)ssh連接登錄Linux服務(wù)器
- Python?代替?xftp?從?Linux?服務(wù)器下載文件的操作方法
相關(guān)文章
解決Ubuntu“E:Unable to locate package“錯誤問題
Ubuntu 16.04 64位安裝軟件時報錯,解決辦法是執(zhí)行 `sudo apt-get update`,Linux發(fā)行版維護軟件倉庫,常用軟件都在里面,用 `apt-get install` 命令直接安裝,編輯 `/etc/apt/sources.list` 文件更新源列表,執(zhí)行 `sudo apt-get update` 更新軟件列表2024-12-12
Linux內(nèi)存泄露的原因排查和解決方案(內(nèi)存管理方法)
文章主要介紹了運維團隊在Linux處理LB服務(wù)內(nèi)存暴漲、內(nèi)存報警問題的過程,從發(fā)現(xiàn)問題、排查原因到制定解決方案,并從中學(xué)習(xí)了Linux內(nèi)存管理的相關(guān)知識2025-02-02
在CentOS 7上給一個網(wǎng)卡分配多個IP地址的方法
本篇文章主要介紹了在CentOS 7上給一個網(wǎng)卡分配多個IP地址的方法,具有一定的參考價值,有需要的可以了解一下。2017-03-03
Linux環(huán)境使用crontab命令設(shè)置定時周期性執(zhí)行任務(wù)【含php執(zhí)行代碼】
這篇文章主要介紹了Linux環(huán)境使用crontab命令設(shè)置定時周期性執(zhí)行任務(wù),結(jié)合實例形式較為詳細的分析了crontab命令的功能、應(yīng)用場景及相關(guān)操作注意事項,并附帶了php執(zhí)行代碼供大家參考,需要的朋友可以參考下2019-07-07
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
LVS+Keepalived構(gòu)建高可用負載均衡(測試篇)
這篇文章主要介紹了LVS+Keepalived構(gòu)建高可用負載均衡的測試方法,需要的朋友可以參考下2013-06-06

