欢迎访问宙启技术站
智能推送

使用Python的psutil库:获取系统网络接口信息

发布时间:2023-12-11 16:11:39

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、内存和磁盘的使用情况,可以在实际开发中灵活应用。