zl程序教程

您现在的位置是:首页 >  后端

当前栏目

linux系统使用python监测网络接口获取网络的输入输出

PythonLinux网络系统 使用 获取 监测 输入输出
2023-06-13 09:15:16 时间

net.py获取网络接口的输入和输出

复制代码代码如下:


#!/usr/bin/envPython
importtime
importsys

iflen(sys.argv)>1:
 INTERFACE=sys.argv[1]
else:
 INTERFACE="eth0"
STATS=[]
print"Interface:",INTERFACE

def rx():
 ifstat=open("/proc/net/dev").readlines()
 forinterfacein ifstat:
  ifINTERFACEininterface:
   stat=float(interface.split()[1])
   STATS[0:]=[stat]

def tx():
 ifstat=open("/proc/net/dev").readlines()
 forinterfacein ifstat:
  ifINTERFACEininterface:
   stat=float(interface.split()[9])
   STATS[1:]=[stat]

print "In   Out"
rx()
tx()

while True:
 time.sleep(1)
 rxstat_o=list(STATS)
 rx()
 tx()
 RX=float(STATS[0])
 RX_O=rxstat_o[0]
 TX=float(STATS[1])
 TX_O=rxstat_o[1]
 RX_RATE=round((RX-RX_O)/1024/1024,3)
 TX_RATE=round((TX-TX_O)/1024/1024,3)
 printRX_RATE,"MB  ",TX_RATE,"MB"

简单说明一下清单4:清单4读取/proc/net/dev中的信息,Python中文件操作可以通过open函数,这的确很像C语言中的fopen。通过open函数获取一个fileobject,然后调用read(),write()等方法对文件进行读写操作。另外Python将文本文件的内容读入可以操作的字符串变量非常容易。文件对象提供了三个“读”方法:read()、readline()和readlines()。每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量。.read()每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。然而.read()生成文件内容最直接的字符串表示,但对于连续的面向行的处理,它却是不必要的,并且如果文件大于可用内存,则不可能实现这种处理。.readline()和.readlines()之间的差异是后者一次读取整个文件,象.read()一样。.readlines()自动将文件内容分析成一个行的列表,该列表可以由Python的for...in...结构进行处理。另一方面,.readline()每次只读取一行,通常比.readlines()慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用.readline()。最后清单4打印出网络接口的输入和输出情况。
可以使用Python命令运行脚本net.py结果见图4