python

超轻量级php框架startmvc

python如何查看系统网络流量的信息

更新时间:2020-04-24 00:00:01 作者:startmvc
前言流量信息可以直接在/proc/net/dev中进行查看,笔者实现的程序使用命令:pythonnet.pyinterfac

前言

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


python net.py interface

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


sudo ifconfig

进行查看。

Python实现的程序如下:


# 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()函数获取流量信息,接下来都是一些数据处理的过程。

总结

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

python 监控网络流量 python 网络流量 python 网络流量分析