使用Python的psutil库:获取系统网络接口信息
Python的psutil库是一个跨平台的库,用于检索有关计算机系统进程和系统利用率的信息。该库主要用于跟踪系统的CPU使用率、内存使用率、磁盘利用率、网络信息等。本文将重点介绍如何使用psutil库获取系统的网络接口信息,并提供一些使用示例。
首先,在使用psutil库之前,我们需要确保已经按照该库。可以通过在命令行中运行以下命令来安装psutil库:
pip install psutil
安装完成后,可以在Python脚本中引入psutil库:
import psutil
以下是一些常用的方法和属性,用于获取系统的网络接口信息:
1. 获取网络接口列表:可以通过调用psutil.net_if_addrs()方法来获取系统上所有的网络接口列表。返回的结果是一个字典,其中键是网络接口的名称,值是一个包含网络接口信息的列表。
示例代码:
import psutil
interfaces = psutil.net_if_addrs()
for interface_name, interface_addresses in interfaces.items():
for address in interface_addresses:
print(f"Interface: {interface_name}")
print(f" - Family: {address.family}")
print(f" - Address: {address.address}")
print(f" - Netmask: {address.netmask}")
print(f" - Broadcast: {address.broadcast}")
输出示例:
Interface: Ethernet
- Family: AddressFamily.AF_INET
- Address: 192.168.1.100
- Netmask: 255.255.255.0
- Broadcast: None
Interface: Ethernet
- Family: AddressFamily.AF_INET6
- Address: fd00::1234:5678:abcd:efgh
- Netmask: ffff:ffff:ffff:ffff::
- Broadcast: None
以上代码遍历所有的网络接口,将每个网络接口的名称、IP地址、子网掩码和广播地址打印出来。
2. 获取网络接口的状态:可以通过调用psutil.net_if_stats()方法来获取系统上所有网络接口的状态信息。返回的结果是一个字典,其中键是网络接口的名称,值是一个包含网络接口状态信息的namedtuple。
示例代码:
import psutil
stats = psutil.net_if_stats()
for interface_name, interface_stats in stats.items():
print(f"Interface: {interface_name}")
print(f" - Is Up: {interface_stats.isup}")
print(f" - Speed: {interface_stats.speed} Mbps")
输出示例:
Interface: Ethernet
- Is Up: True
- Speed: 1000 Mbps
Interface: Ethernet
- Is Up: False
- Speed: 0 Mbps
以上代码遍历所有的网络接口,将每个网络接口的名称、是否启用和传输速度打印出来。
3. 获取系统的网络连接信息:可以通过调用psutil.net_connections()方法来获取系统上所有的网络连接信息。返回的结果是一个列表,每个元素都是一个namedtuple,包含有关网络连接的各种信息,如本地地址、远程地址、连接状态等。
示例代码:
import psutil
connections = psutil.net_connections()
for connection in connections:
print(f"Protocol: {connection.type}")
print(f" - Local Address: {connection.laddr}")
print(f" - Remote Address: {connection.raddr}")
print(f" - Status: {connection.status}")
输出示例:
Protocol: af_packet
- Local Address: ('0.0.0.0', 0)
- Remote Address: ('0.0.0.0', 0)
- Status: LISTEN
Protocol: tcp
- Local Address: ('127.0.0.1', 5037)
- Remote Address: ('127.0.0.1', 60664)
- Status: ESTABLISHED
以上代码遍历所有的网络连接,将每个连接的协议类型、本地地址、远程地址和状态打印出来。
总结:本文介绍了如何使用psutil库来获取系统的网络接口信息,并提供了一些使用示例。通过psutil库,我们可以轻松地获取系统的网络接口列表、网络接口状态以及网络连接信息,帮助我们更好地了解系统的网络情况。同时,psutil库还提供了其他一些功能,如获取CPU、内存和磁盘的使用情况,可以在实际开发中灵活应用。
