各位用户为了找寻关于python如何查看系统网络流量的信息的资料费劲了很多周折。这里教程网为您整理了关于python如何查看系统网络流量的信息的相关资料,仅供查阅,以下为您介绍关于python如何查看系统网络流量的信息的详细内容

前言

流量信息可以直接在/proc/net/dev中进行查看,笔者实现的程序使用命令:

? 1 python net.py interface

其中interface为网卡名称,使用什么网卡,电脑有哪些网卡,可以使用

? 1 sudo ifconfig

进行查看。

Python实现的程序如下:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 # coding:utf-8 import 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     0 vmnet1:    0    0  0  0  0   0     0     0    0   56  0  0  0   0    0     0 vmnet8:    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()函数获取流量信息,接下来都是一些数据处理的过程。

总结

以上就是这篇文章的全部内容了,希望对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。