本文目录导读:

Linux/macOS 命令行方案
使用 ethtool(需要 root 权限)
#!/bin/bash # 获取网卡速率 interface="eth0" echo "网卡 $interface 速率:" ethtool $interface | grep "Speed"
使用 /sys/class/net 目录(无需额外工具)
#!/usr/bin/env python3
import re
def get_speed(interface):
"""从系统文件读取网卡速率"""
try:
path = f"/sys/class/net/{interface}/speed"
with open(path, 'r') as f:
speed = f.read().strip()
if speed: # 可能有 "1000" 或 "-1"(未知)
return f"{int(speed)} Mbps"
except FileNotFoundError:
return f"接口 {interface} 不存在"
except PermissionError:
return "权限不足"
return "未知"
# 获取所有网卡
import os
net_path = "/sys/class/net"
if __name__ == "__main__":
if os.path.exists(net_path):
interfaces = os.listdir(net_path)
for iface in interfaces:
print(f"{iface}: {get_speed(iface)}")
else:
print("无法访问网卡信息目录")
Windows PowerShell 方案
# PowerShell 脚本 Get-NetAdapter | Select-Object Name, LinkSpeed, Status | Format-Table
或者获取更详细的信息:
# 使用 WMI 查询
Get-WmiObject Win32_NetworkAdapter |
Where-Object {$_.NetConnectionID -ne $null} |
Select-Object NetConnectionID, @{Name="Speed(Mbps)";Expression={$_.Speed/1000000}} |
Format-Table
跨平台 Python 方案(推荐)
#!/usr/bin/env python3
"""
跨平台获取网卡速率脚本
支持 Linux、macOS、Windows
"""
import platform
import subprocess
import re
def get_network_speed_linux(interface=None):
"""Linux 系统获取网卡速率"""
try:
with open(f"/sys/class/net/{interface}/speed", 'r') as f:
speed_mbps = f.read().strip()
if speed_mbps.isdigit():
return f"{speed_mbps} Mbps"
return "未知"
except:
return "无法获取"
def get_network_speed_windows():
"""Windows 系统获取网卡速率"""
try:
result = subprocess.run(
["powershell", "-Command",
"Get-NetAdapter | Select-Object Name, LinkSpeed | ConvertTo-Json"],
capture_output=True, text=True
)
# 解析 JSON
import json
data = json.loads(result.stdout)
if isinstance(data, list):
for adapter in data:
print(f"{adapter['Name']}: {adapter['LinkSpeed']}")
elif data:
print(f"{data['Name']}: {data['LinkSpeed']}")
except:
print("无法获取网卡信息")
def get_network_speed_macos():
"""macOS 系统获取网卡速率"""
# macOS 通常需要 ethtool 或 ifconfig
try:
result = subprocess.run(
["ifconfig"],
capture_output=True, text=True
)
# 解析接口信息
interfaces = re.findall(r'^(\w+):.*?status: active', result.stdout, re.MULTILINE)
return interfaces
except:
return ["无法获取"]
def main():
system = platform.system()
print(f"系统: {system}")
if system == "Linux":
import os
net_path = "/sys/class/net"
if os.path.exists(net_path):
interfaces = os.listdir(net_path)
for iface in interfaces:
speed = get_network_speed_linux(iface)
print(f"{iface}: {speed}")
elif system == "Windows":
get_network_speed_windows()
elif system == "Darwin": # macOS
interfaces = get_network_speed_macos()
print("macOS 网络接口(需安装 ethtool 查看速率)")
for iface in interfaces:
print(f" {iface}")
# macOS 可用 system_profiler 查看更多信息
else:
print("不支持的平台")
if __name__ == "__main__":
main()
实时流量监控脚本
#!/usr/bin/env python3
"""
实时查看网卡传输速率(基于 /proc/net/dev)
"""
import time
import os
import sys
def read_net_stats():
"""读取 /proc/net/dev 数据"""
try:
with open('/proc/net/dev', 'r') as f:
lines = f.readlines()[2:] # 跳过前两行
stats = {}
for line in lines:
parts = line.strip().split()
interface = parts[0].rstrip(':')
# 格式: 名称 收包 收字节 ... 发包 发字节 ...
packages_recv = int(parts[1])
bytes_recv = int(parts[2])
packages_send = int(parts[9])
bytes_send = int(parts[10])
stats[interface] = {
'rx_bytes': bytes_recv,
'tx_bytes': bytes_send,
'rx_packets': packages_recv,
'tx_packets': packages_send
}
return stats
except FileNotFoundError:
print("不支持的文件系统")
sys.exit(1)
def format_speed(bits_per_second):
"""格式化速度"""
if bits_per_second < 1024:
return f"{bits_per_second} bits/s"
elif bits_per_second < 1024**2:
return f"{bits_per_second/1024:.2f} Kbps"
elif bits_per_second < 1024**3:
return f"{bits_per_second/1024**2:.2f} Mbps"
else:
return f"{bits_per_second/1024**3:.2f} Gbps"
def monitor_interface(interface, interval=1):
"""监控指定网卡的实时速率"""
old_stats = read_net_stats()
time.sleep(interval)
new_stats = read_net_stats()
if interface in old_stats and interface in new_stats:
old = old_stats[interface]
new = new_stats[interface]
tx_rate = (new['tx_bytes'] - old['tx_bytes']) * 8 / interval # 转为 bit/s
rx_rate = (new['rx_bytes'] - old['rx_bytes']) * 8 / interval
print(f"接口: {interface}")
print(f"发送: {format_speed(tx_rate)}")
print(f"接收: {format_speed(rx_rate)}")
print("─" * 30)
else:
print(f"接口 {interface} 不存在")
if __name__ == "__main__":
interface = sys.argv[1] if len(sys.argv) > 1 else "eth0"
while True:
monitor_interface(interface)
time.sleep(1)
安装依赖的辅助脚本
#!/bin/bash
# 检查并安装必要的工具
echo "检查必要工具..."
# Linux 检查 ethtool
if command -v ethtool &> /dev/null; then
echo "ethtool 已安装"
else
echo "安装 ethtool..."
sudo apt-get install -y ethtool # Debian/Ubuntu
# sudo yum install -y ethtool # CentOS/RHEL
fi
# macOS 检查
if [[ "$(uname)" == "Darwin" ]]; then
echo "macOS 用户建议:"
echo " brew install ethtool"
echo " 或使用系统自带命令: system_profiler SPCardDataType"
fi
使用建议
-
快速查看(Linux):
cat /sys/class/net/eth0/speed
-
实时监控:
watch -n 1 "cat /sys/class/net/eth0/speed"
-
组合脚本:将上述 Python 脚本保存为
net_speed.py,chmod +x net_speed.py ./net_speed.py
这些脚本可以满足大部分获取网卡速率的需求,根据你的具体使用场景选择合适的方案即可。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播