各位用户为了找寻关于python如何查看系统网络流量的信息的资料费劲了很多周折。这里教程网为您整理了关于python如何查看系统网络流量的信息的相关资料,仅供查阅,以下为您介绍关于python如何查看系统网络流量的信息的详细内容
前言
流量信息可以直接在/proc/net/dev
中进行查看,笔者实现的程序使用命令:
python net.py interface
其中interface
为网卡名称,使用什么网卡,电脑有哪些网卡,可以使用
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()
函数获取流量信息,接下来都是一些数据处理的过程。
总结
以上就是这篇文章的全部内容了,希望对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。