【Linux系列】macOS(MacBook)上获取 MAC 地址
博客目录
- 方法 1:通过终端命令获取 MAC 地址
- 1. 使用 ifconfig 命令
- 2. 使用 networksetup 命令
- 方法 2:通过 Python 获取 MAC 地址
- 1. 使用 uuid.getnode()
- 2. 使用 netifaces 库(推荐)
- 注意事项
- 总结
方法 1:通过终端命令获取 MAC 地址
1. 使用 ifconfig 命令
ifconfig en0 | grep "ether"
en0
通常是 MacBook 的 Wi-Fi 接口(如果是en1
,可能是 Thunderbolt 以太网)。- 输出示例:
ether 8c:85:90:ab:12:34
8c:85:90:ab:12:34
就是 MAC 地址。
2. 使用 networksetup 命令
networksetup -listallhardwareports
- 这会列出所有网络接口,如:
Hardware Port: Wi-Fi Device: en0 Ethernet Address: 8c:85:90:ab:12:34
Ethernet Address
就是 MAC 地址。
方法 2:通过 Python 获取 MAC 地址
1. 使用 uuid.getnode()
import uuidmac_num = uuid.getnode() # 返回十进制整数
mac_hex = ":".join([f"{(mac_num >> (40 - 8 * i)) & 0xff:02x}" for i in range(6)])
print("MAC 地址:", mac_hex)
输出示例:
MAC 地址: 8c:85:90:ab:12:34
2. 使用 netifaces 库(推荐)
pip install netifaces
import netifacesdef get_mac_address(interface="en0"):try:addrs = netifaces.ifaddresses(interface)return addrs[netifaces.AF_LINK][0]["addr"]except (KeyError, ValueError):return Noneprint("Wi-Fi MAC 地址:", get_mac_address("en0"))
输出示例:
Wi-Fi MAC 地址: 8c:85:90:ab:12:34
注意事项
- Wi-Fi 和以太网接口不同
en0
→ Wi-Fi(无线网卡)en1
→ Thunderbolt 以太网(如果有)bridge0
→ 虚拟机/容器虚拟网卡
- 隐私模式(随机 MAC 地址)
- macOS 在连接某些 Wi-Fi 时会使用 随机 MAC 地址(如公共网络),此时获取的可能是临时地址。
- 可在 系统设置 > 网络 > Wi-Fi > 高级 > 隐私 中关闭随机 MAC 地址。
- Python 方法可能返回
00:00:00:00:00:00
- 如果
uuid.getnode()
返回0
,可能是权限问题或虚拟环境(如 Docker)。 - 改用
netifaces
或终端命令更可靠。
- 如果
总结
方法 | 适用场景 | 备注 |
---|---|---|
ifconfig en0 | grep "ether" | 终端快速查看 | 最直接 |
networksetup -listallhardwareports | 查看所有接口 | 更详细 |
uuid.getnode() | Python 简单获取 | 可能返回 0 |
netifaces 库 | Python 精确获取 | 推荐 |
如果你的 MacBook 使用 随机 MAC 地址,可能需要关闭隐私模式才能获取真实地址。
觉得有用的话点个赞
👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙