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

Python中通过netifaces库获取本机网络接口的IP地址和MAC地址

发布时间:2024-01-13 18:28:52

在Python中,可以使用netifaces库来获取本机的网络接口信息,包括IP地址和MAC地址。

首先,确保已经安装了netifaces库。如果没有安装,可以使用以下命令来安装:

pip install netifaces

接下来,我们通过一个使用netifaces库的示例来演示如何获取本机网络接口的IP地址和MAC地址。

import netifaces as ni

# 获取所有网络接口的信息
interfaces = ni.interfaces()

for interface in interfaces:
    print(f'Interface: {interface}')
    
    # 获取该接口的IPv4地址
    if 'AF_INET' in ni.ifaddresses(interface):
        ip = ni.ifaddresses(interface)['AF_INET'][0]['addr']
        print(f'IPv4 address: {ip}')
    
    # 获取该接口的MAC地址
    if 'addr' in ni.ifaddresses(interface)[ni.AF_LINK][0]:
        mac = ni.ifaddresses(interface)[ni.AF_LINK][0]['addr']
        print(f'MAC address: {mac}')
    
    print('---')

该示例首先使用ni.interfaces()函数获取所有网络接口的名称,并将名称保存在interfaces变量中。然后,通过遍历接口名称的方式,逐个获取每个接口的信息。

对于每个接口,我们首先使用ni.ifaddresses()函数获取接口的所有地址信息,并根据地址类型进行判断。在本例中,我们只关注IPv4地址和MAC地址。

对于IPv4地址,我们可以使用ni.ifaddresses(interface)['AF_INET'][0]['addr']来获取。其中,AF_INET表示IPv4地址类型,[0]表示 个地址(通常情况下只有一个IPv4地址),'addr'表示具体的地址。

对于MAC地址,我们可以使用ni.ifaddresses(interface)[ni.AF_LINK][0]['addr']来获取。其中,ni.AF_LINK表示MAC地址类型。

最后,我们打印出每个接口的名称、IPv4地址和MAC地址,并使用---来分隔不同接口的信息。

通过运行上述示例代码,我们可以获取到本机每个网络接口的IPv4地址和MAC地址。注意,不同的操作系统和网络配置可能会有所不同,因此具体的输出结果可能会有所差异。

希望上述示例能帮助你通过netifaces库获取本机网络接口的IP地址和MAC地址。