python如何查看系統網路流量的資訊,python網路流量
前言
流量資訊可以直接在/proc/net/dev
中進行查看,筆者實現的程式使用命令:
python net.py interface
其中interface
為網卡名稱,使用什麼網卡,電腦有哪些網卡,可以使用
sudo ifconfig
進行查看。
Python實現的程式如下:
# coding:utf-8import sys, time, os'''Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 28169 364 0 0 0 0 0 0 28169 364 0 0 0 0 0 0 wlan1: 7432984 6018 0 0 0 0 0 0 681381 6115 0 0 0 0 0 0vmnet1: 0 0 0 0 0 0 0 0 0 56 0 0 0 0 0 0vmnet8: 0 0 0 0 0 0 0 0 0 55 0 0 0 0 0 0 eth0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0'''_unit_=['B','KB','MB','GB','TB']def get_net_data(interface): for line in open('/proc/net/dev', 'r'): if line.split(':')[0].find(interface)>=0: return map(int, line.split(':')[1].split())def convert_bytes_to_string(b): cnt = 0 while b >= 1024.0: b = float(b) / 1024.0 cnt += 1 return '%.2f%s'%(b,_unit_[cnt])if __name__ == '__main__': interface = sys.argv[1] while True: net_data = get_net_data(interface) receive_data_bytes = net_data[0] transmit_data_bytes = net_data[8] os.system('clear') print 'Interface:%s -> Receive Data: %s Transmit Data: %s'%(interface, convert_bytes_to_string(receive_data_bytes), convert_bytes_to_string(transmit_data_bytes)) time.sleep(1)
程式入口從if name=='main'
處開始,首先通過參數擷取interface
,然後調用get_net_data()
函數擷取流量資訊,接下來都是一些資料處理的過程。
總結
以上就是這篇文章的全部內容了,希望對大家的學習或者工作帶來一定的協助,如果有疑問大家可以留言交流。