Linux服务器网卡流量查看方法 shell和Python各一枚
在Linux服务器上,我们经常会需要查看网卡的流量情况,以便了解网络带宽的使用情况和网络环境的波动情况。下面分别介绍使用shell脚本和Python脚本来查看网卡流量的方法。
使用Shell脚本查看网卡流量
在Linux系统中,我们可以通过/proc/net/dev
文件来查看网卡的流量情况。我们可以编写一个简单的Shell脚本来实现这个功能。
#!/bin/bash
# 查看网卡流量情况脚本
# 获取所有网卡的名称
devices=$(grep ':' /proc/net/dev | cut -d ':' -f 1 | tr '\n' ' ')
# 输出表头信息
echo -e "Device\t\tReceived\t\t\tTransmitted"
# 遍历每个网卡,输出流量信息
for device in $devices; do
received=$(grep $device /proc/net/dev | cut -d ':' -f 2 | awk '{print $1}')
transmitted=$(grep $device /proc/net/dev | cut -d ':' -f 2 | awk '{print $9}')
echo -e "$device\t\t$received bytes\t\t$transmitted bytes"
done
这个脚本会输出每个网卡的接收流量和发送流量,输出结果类似于下面的格式:
Device Received Transmitted
eth0 1000 bytes 900 bytes
lo 300 bytes 300 bytes
使用Python脚本查看网卡流量
Python拥有强大的内置库,通过调用相关的库来实现功能是非常方便的。我们可以使用psutil库来获取网卡的流量信息,并通过prettytable库来美化输出的表格。
#!/usr/bin/env python3
# 查看网卡流量情况脚本
import psutil
from prettytable import PrettyTable
# 获取所有网卡的名称
devices = psutil.net_io_counters(pernic=True).keys()
# 输出表头信息
table = PrettyTable(['Device', 'Received', 'Transmitted'])
# 遍历每个网卡,添加一行数据到表格中
for device in devices:
info = psutil.net_io_counters(pernic=True)[device]
received = info.bytes_recv
transmitted = info.bytes_sent
table.add_row([device, received, transmitted])
# 输出表格
print(table)
这个脚本会输出每个网卡的接收流量和发送流量,输出结果类似于下面的格式:
+-------+----------+-------------+
| Device| Received| Transmitted|
+-------+----------+-------------+
| eth0 | 1000 | 900 |
+-------+----------+-------------+
| lo | 300 | 300 |
+-------+----------+-------------+
上述两个示例对于查看网卡流量的方法提供了参考,不同的工作环境和任务需要选择适合自己的工具来完成。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux服务器网卡流量查看方法 shell和Python各一枚 - Python技术站