在Linux系统中,使用Python监测网络接口的输入输出,一个常用的方法是读取`/proc/net/dev`文件。这个文件包含了网络接口设备的统计信息,包括接收和发送的数据包数量、字节数等。
以下是一个简单的Python脚本示例,用于读取并打印指定网络接口(如`eth0`)的输入输出字节数:
import re
def get_network_io(interface='eth0'):
"""
获取指定网络接口的输入输出字节数
:param interface: 网络接口名称,默认为'eth0'
:return: 接收和发送的字节数,格式为(rx_bytes, tx_bytes)
"""
with open('/proc/net/dev', 'r') as f:
data = f.readlines()
# 查找指定网络接口的行
for line in data:
if interface in line:
# 使用正则表达式提取接收和发送的字节数
match = re.search(r'(\d+)\s+(\d+)\s+.*', line)
if match:
rx_bytes = int(match.group(1)) # 接收字节数
tx_bytes = int(match.group(2)) # 发送字节数
return rx_bytes, tx_bytes
# 如果没有找到指定网络接口,返回None
return None, None
# 示例:获取eth0接口的输入输出字节数
rx_bytes, tx_bytes = get_network_io('eth0')
if rx_bytes is not None and tx_bytes is not None:
print(f"eth0接收字节数: {rx_bytes}, 发送字节数: {tx_bytes}")
else:
print("未找到指定网络接口或发生错误")
这个脚本定义了一个`get_network_io`函数,它接受一个网络接口名称作为参数(默认为`eth0`),然后读取`/proc/net/dev`文件并搜索该接口的行。使用正则表达式提取出接收和发送的字节数,最后返回这两个值。如果未找到指定接口,则返回`(None, None)`。
请注意,根据您的Linux系统和网络配置,网络接口的名称可能不是`eth0`,例如它可能是`ens33`、`wlan0`等。您需要根据实际情况调整`interface`参数的值。