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

Python中如何获取系统的网络接口信息

发布时间:2024-01-17 12:35:51

在Python中,我们可以使用netifaces模块来获取系统的网络接口信息。netifaces模块提供了一个简单、跨平台的方式来查询和操作系统的网络接口。

首先,我们需要安装netifaces模块。可以使用以下命令来安装:

pip install netifaces

下面是一个获取系统网络接口信息的示例:

import netifaces

# 获取所有网络接口
interfaces = netifaces.interfaces()
print("所有网络接口:")
for interface in interfaces:
    print(interface)

# 获取特定网络接口的信息
interface = "eth0"
addresses = netifaces.ifaddresses(interface)
for address_family in addresses:
    if address_family == netifaces.AF_INET:
        print(f"{interface}的IPv4地址:")
        for address in addresses[netifaces.AF_INET]:
            print(f"  {address['addr']}")

    if address_family == netifaces.AF_INET6:
        print(f"{interface}的IPv6地址:")
        for address in addresses[netifaces.AF_INET6]:
            print(f"  {address['addr']}")

# 获取默认网络接口
default_interface = netifaces.gateways()['default'][netifaces.AF_INET][1]
print(f"默认网络接口:{default_interface}")

在上面的示例中,我们首先通过netifaces.interfaces()函数获取系统的所有网络接口。然后,我们使用netifaces.ifaddresses()函数来获取特定网络接口的信息,如IPv4和IPv6地址。netifaces.ifaddresses()函数返回一个字典,其中键是地址族(address family),值是地址信息的列表。我们可以使用netifaces.AF_INETnetifaces.AF_INET6来访问IPv4和IPv6地址的信息。

最后,我们可以使用netifaces.gateways()函数来获取默认网络接口的名称。

运行上述示例代码,可以得到类似以下的输出:

所有网络接口:
lo
eth0
wlan0
eth1
eth2
wlan1
eth3
eth4
eth5
eth6
eth7
eth8
eth9
eth10
eth11
eth12
eth13
eth14
eth15
eth16
eth17
eth18
eth19
eth20
eth21
eth22
eth23
eth24
eth25
eth26
eth27
eth28
eth29
eth30
eth31
...

eth0的IPv4地址:
  192.168.1.100

eth0的IPv6地址:
  fe80::c6f5:2f6a:842a:7d4f

默认网络接口:eth0

上述示例中,我们获取了所有网络接口的信息,并打印出所有网络接口的名称。然后,我们获取了特定网络接口eth0的IPv4和IPv6地址,并打印出来。最后,我们获取了默认网络接口的名称,并打印出来。

通过使用netifaces模块,我们可以轻松地获取系统的网络接口信息,并进行进一步的处理和分析。