avatar

RWO.cc

读一次写一次

  • 首页
  • 搭建手册
  • 笔记
  • 短视频
  • 关于
  • 🌈200粉丝🌈
Home python 获取 mac 地址
文章

python 获取 mac 地址

Posted 2024-10-29 Updated 2024-10- 29
By RWO.
7~9 min read

在 Python 中,可以通过 uuid 模块来获取设备的 MAC 地址。下面是几种获取 MAC 地址的方法。

方法一:使用 uuid 模块获取 MAC 地址

uuid.getnode() 可以返回设备的 MAC 地址。

示例:使用 uuid 模块获取 MAC 地址

import uuid

def get_mac_address():
    mac = uuid.getnode()
    mac_address = ':'.join([f'{(mac >> 8*i) & 0xFF:02x}' for i in range(6)][::-1])
    return mac_address

# 示例调用
print("MAC 地址:", get_mac_address())

在这个例子中,uuid.getnode() 返回一个整数表示的 MAC 地址,我们将其格式化为标准的 MAC 地址格式(例如:00:1a:2b:3c:4d:5e)。

方法二:使用 getmac 库获取 MAC 地址

getmac 是一个专用的第三方库,用于跨平台获取设备的 MAC 地址。首先需要安装 getmac 库:

pip install getmac

示例:使用 getmac 获取 MAC 地址

from getmac import get_mac_address

# 获取 MAC 地址
mac_address = get_mac_address()
print("MAC 地址:", mac_address)

这个库会自动检测网络接口,并返回设备的 MAC 地址,兼容 Windows、macOS 和 Linux 系统。

方法三:使用 socket 和 fcntl 模块(仅限 Linux)

在 Linux 上,可以通过 socket 和 fcntl 模块获取特定网络接口的 MAC 地址。

示例:使用 socket 和 fcntl 获取 MAC 地址

import socket
import fcntl
import struct

def get_mac_address(interface_name):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    info = fcntl.ioctl(
        s.fileno(),
        0x8927,
        struct.pack('256s', interface_name[:15].encode('utf-8'))
    )
    return ':'.join(f'{b:02x}' for b in info[18:24])

# 示例调用
print("eth0 MAC 地址:", get_mac_address('eth0'))

在这个例子中,我们通过 ioctl 获取网络接口 eth0 的 MAC 地址。注意,这种方法仅适用于 Linux 系统。

方法四:使用 psutil 库获取所有网络接口的 MAC 地址

psutil 是一个跨平台的系统和进程监控库,可以用来获取设备的 MAC 地址。

安装 psutil

pip install psutil

示例:使用 psutil 获取所有网络接口的 MAC 地址

import psutil

def get_all_mac_addresses():
    mac_addresses = {}
    for interface, addrs in psutil.net_if_addrs().items():
        for addr in addrs:
            if addr.family == psutil.AF_LINK:
                mac_addresses[interface] = addr.address
    return mac_addresses

# 示例调用
print("所有网络接口的 MAC 地址:", get_all_mac_addresses())

这个例子会返回一个字典,其中包含所有网络接口的名称和对应的 MAC 地址。psutil 可以在 Windows、macOS 和 Linux 上使用。

总结

  • 方法一(uuid):简单且跨平台,适合获取设备主 MAC 地址。
  • 方法二(getmac** 库)**:推荐跨平台解决方案,适合获取设备主 MAC 地址。
  • 方法三(socket** 和 fcntl)**:适用于 Linux,可以获取特定接口的 MAC 地址。
  • 方法四(psutil** 库)**:适用于多平台,获取所有网络接口的 MAC 地址。
短视频
每日一点 短视频 Python
License:  CC BY 4.0
Share

Further Reading

Nov 3, 2024

什么是 python 的闭包

在 Python 中,闭包(Closure)是一种函数对象,它不仅包含了函数的代码,还包含了函数创建时的环境变量。这意味着闭包可以“记住”其外部作用域中的变量,即使在外部作用域已经结束后,闭包仍然可以访问这些变量。 函数可以访问他被创建时所处的上下文环境,这被称为闭包。 闭包的基本特征 嵌套函数:闭

Nov 2, 2024

使用argparse模块解析命令行参数

在 Python 中,argparse 模块用于解析命令行参数,使得脚本可以更灵活地接受用户输入。以下是如何使用 argparse 模块解析命令行参数的详细介绍和示例。 基本用法 示例:简单的命令行参数解析 首先,创建一个简单的脚本来解析命令行参数。我们将创建一个脚本,该脚本接受两个整数并打印它们的

Nov 1, 2024

Python中的二维码生成与解析(花里胡哨)

如何使用 qrcode 库生成各种有趣的二维码,包括彩色二维码、带 Logo 的二维码和动态 GIF 二维码。下面,我们将逐步介绍这些功能。 Qrcode 库简介 qrcode 库是一个强大的 Python 工具,用于生成二维码。除了基本的二维码,它还支持自定义功能,如颜色变化、样式设计和动画效果。

OLDER

Python 使用 ffmpeg 进行 音视频格式转换等操作

NEWER

halo代码注入——实现悬浮展示当前文章二维码 和 自定义主题字体

Recently Updated

  • 什么是 python 的闭包
  • 使用argparse模块解析命令行参数
  • Python中的二维码生成与解析(花里胡哨)
  • Python中的二维码生成与解析(基础使用)
  • 使用platform模块获取系统信息

Trending Tags

学习 Git 工具 SQL docker-compose 每日一点 快捷键 Flink fastapi Windows

Contents

©2025 RWO.cc. Some rights reserved.

Using the Halo theme Chirpy