📜  使用Python提取 MAC 地址(1)

📅  最后修改于: 2023-12-03 15:22:20.289000             🧑  作者: Mango

使用Python提取 MAC 地址

MAC地址,又称物理地址,是用于识别网络上设备的唯一标识符。通常呈现为六组16进制数。

使用Python提取MAC地址非常容易。本文将介绍三种方法。

方法一:使用正则表达式

使用正则表达式,可以从字符串中提取MAC地址。

import re

string = "Device with MAC address 00:11:22:33:44:55"
pattern = r"([\dA-Fa-f]{2}[:]?){6}"
result = re.search(pattern, string).group(0)

print(result)

这个例子使用正则表达式寻找其中的MAC地址。代码使用了Python的re模块,它包含各种与正则表达式相关的方法。

输出为:00:11:22:33:44:55

方法二:使用netifaces库

netifaces是Python的一个库,可以很容易地获取系统上的网络接口信息和地址,包括MAC地址。

import netifaces

interfaces = netifaces.interfaces()

for interface in interfaces:
    try:
        mac = netifaces.ifaddresses(interface)[netifaces.AF_LINK][0]['addr']
        print(f"Interface '{interface}' has MAC address '{mac}'.")
    except KeyError:
        print(f"No MAC address found for interface '{interface}'.")

这个例子使用了netifaces库,它首先找到系统上的接口,然后获取每个接口的MAC地址。

输出为类似下面的内容:

Interface 'lo' has MAC address '00:00:00:00:00:00'.
Interface 'eth0' has MAC address '12:34:56:78:9a:bc'.
No MAC address found for interface 'wlan0'.
方法三:使用psutil库

psutil是一个跨平台的库,可以检索系统信息。它可以很容易地获取网络接口和相关的MAC地址。

import psutil

nic_info = psutil.net_if_addrs()

for interface in nic_info.keys():
    for address in nic_info[interface]:
        if str(address.family) == 'AddressFamily.AF_LINK':
            print(f"Interface '{interface}' has MAC address '{address.address}'.")

这个例子使用了psutil库,它首先找到系统上的接口,然后获取每个接口的MAC地址。

输出为类似下面的内容:

Interface 'lo' has MAC address '00:00:00:00:00:00'.
Interface 'docker0' has MAC address '02:42:d7:19:23:3a'.
No MAC address found for interface 'wlan0'.

以上是三种常见的提取MAC地址的方法。选取最适合自己项目的方法即可。