psutil模塊獲取網卡流量


使用python監控系統時,獲取網卡流量是比較難搞的,網上找了一個比較好的腳本,分享一下!

 

psutil模塊是一個跨平台的獲取進程和系統應用情況(CPU,內存,磁盤,網絡,傳感器)的庫。該模塊用於系統監控、限制進程資源和運行進程的管理等方面

 

安裝模塊psutil

pip install psutil

 

親測Linux和Windows使用正常

 

net_traffic.py

#!/usr/bin/env python
# -*- coding: utf-8 -*- try:     import psutil except ImportError:     print('Error: psutil module not found!')     exit() def get_key():     key_info = psutil.net_io_counters(pernic=True).keys()     recv = {}     sent = {}     for key in key_info:         recv.setdefault(key, psutil.net_io_counters(pernic=True).get(key).bytes_recv)         sent.setdefault(key, psutil.net_io_counters(pernic=True).get(key).bytes_sent)     return key_info, recv, sent def get_rate(func):     import time     key_info, old_recv, old_sent = func()     time.sleep(1)     key_info, now_recv, now_sent = func()     net_in = {}     net_out = {}     for key in key_info:         # float('%.2f' % a)         net_in.setdefault(key, float('%.2f' %((now_recv.get(key) - old_recv.get(key)) / 1024)))         net_out.setdefault(key, float('%.2f' %((now_sent.get(key) - old_sent.get(key)) / 1024)))     return key_info, net_in, net_out while 1:     try:          key_info, net_in, net_out = get_rate(get_key)          for key in key_info:              # lo 是linux的本機回環網卡,以太網是我win10系統的網卡名              if key != 'lo' or key == '以太網':                 print('%s\nInput:\t %-5sKB/s\nOutput:\t %-5sKB/s\n' % (key, net_in.get(key), net_out.get(key)))     except KeyboardInterrupt:         exit()

注意:以太網是我win10網卡名,可自行更改

數字顯示,改成保留小數點2位,使用float

 

運行腳本,使用迅雷下載一步高清電影,效果如下:

動畫1.gif

 

將代碼拷貝到Linux服務器,運行一下。

下載一個軟件包,效果如下:

blob.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM