当前位置: 首页 > ai >正文

【Linux系列】macOS(MacBook)上获取 MAC 地址

csdn

博客目录

    • 方法 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

注意事项

  1. Wi-Fi 和以太网接口不同
    • en0 → Wi-Fi(无线网卡)
    • en1 → Thunderbolt 以太网(如果有)
    • bridge0 → 虚拟机/容器虚拟网卡
  2. 隐私模式(随机 MAC 地址)
    • macOS 在连接某些 Wi-Fi 时会使用 随机 MAC 地址(如公共网络),此时获取的可能是临时地址。
    • 可在 系统设置 > 网络 > Wi-Fi > 高级 > 隐私 中关闭随机 MAC 地址。
  3. Python 方法可能返回 00:00:00:00:00:00
    • 如果 uuid.getnode() 返回 0,可能是权限问题或虚拟环境(如 Docker)。
    • 改用 netifaces 或终端命令更可靠。

总结

方法适用场景备注
ifconfig en0 | grep "ether"终端快速查看最直接
networksetup -listallhardwareports查看所有接口更详细
uuid.getnode()Python 简单获取可能返回 0
netifacesPython 精确获取推荐

如果你的 MacBook 使用 随机 MAC 地址,可能需要关闭隐私模式才能获取真实地址。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

http://www.xdnf.cn/news/18516.html

相关文章:

  • 内网穿透教程
  • React学习(十三)
  • Java 泛型 T、E、K、V、?、S、U、V
  • week4-[字符数组]字符统计
  • 详细介绍将 AList 搭建 WebDav 添加到 PotPlayer 专辑 的方法
  • 基于Python与Tkinter的校园点餐系统设计与实现
  • 单片机的输出模式推挽和开漏如何选择呢?
  • [新启航]白光干涉仪与激光干涉仪的区别及应用解析
  • 【typenum】 24 去除尾部零的特性(private.rs片段)
  • MERGE 语句在 Delta Lake 中的原子更新原理
  • nodejs 集成mongodb实现增删改查
  • Kubernetes相关问题集(四)
  • 什么是正态分布
  • B.30.01.1-Java并发编程及电商场景应用
  • Socket 编程预备
  • 软件测试从入门到精通:通用知识点+APP专项实战
  • 使用Screenpipe+本地大模型实现私人助手Agent
  • 某电器5G智慧工厂网络建设全解析
  • Linux学习:信号的保存
  • TypeReference 泛型的使用场景及具体使用流程
  • GEO优化服务商:AI时代数字经济的新引擎——解码行业发展与技术创新实践
  • 【Spring Boot】集成Redis超详细指南 Redis在Spring Boot中的应用场景
  • kubernetes-dashboard使用http不登录
  • 【卷积神经网络详解与实例】1——计算机中的图像原理
  • 卓伊凡的开源战略与PHP-SG16加密技术深度解析-sg加密技术详解-卓伊凡
  • pixijs基础学习
  • pyecharts可视化图表-map:从入门到精通
  • 【手撕JAVA多线程:2.线程安全】 2.1.JVM层面的线程安全保证
  • C++算法·进制转换
  • DeepSeek V3.1深度解析:一个模型两种思维,迈向Agent时代的第一步!