首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取MAC地址

获取MAC地址
EN

Stack Overflow用户
提问于 2008-10-01 18:51:37
回答 13查看 174.2K关注 0票数 125

我需要一种在运行时确定计算机MAC地址的跨平台方法。对于windows,可以使用'wmi‘模块,而在Linux下,我能找到的唯一方法就是运行ifconfig并对其输出运行正则表达式。我不喜欢使用只在一个操作系统上工作的包,解析另一个程序的输出似乎不是很优雅,更不用说容易出错了。

有没有人知道跨平台方法(windows和linux)来获取MAC地址?如果没有,有没有人知道比我上面列出的更优雅的方法?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2008-10-01 19:06:31

Python2.5包括一个uuid实现,它(在至少一个版本中)需要mac地址。您可以轻松地将mac查找函数导入到您自己的代码中:

代码语言:javascript
复制
from uuid import getnode as get_mac
mac = get_mac()

返回值是48位整数形式的mac地址。

票数 178
EN

Stack Overflow用户

发布于 2011-01-25 09:57:17

这个问题的纯python解决方案(在Linux下获取特定本地接口的MAC ),最初是由vishnubob作为评论发布的,并由this activestate recipe中的Ben Mackey改进。

代码语言:javascript
复制
#!/usr/bin/python

import fcntl, socket, struct

def getHwAddr(ifname):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    info = fcntl.ioctl(s.fileno(), 0x8927,  struct.pack('256s', ifname[:15]))
    return ':'.join(['%02x' % ord(char) for char in info[18:24]])

print getHwAddr('eth0')

这是与Python 3兼容的代码:

代码语言:javascript
复制
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import fcntl
import socket
import struct


def getHwAddr(ifname):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    info = fcntl.ioctl(s.fileno(), 0x8927,  struct.pack('256s', bytes(ifname, 'utf-8')[:15]))
    return ':'.join('%02x' % b for b in info[18:24])


def main():
    print(getHwAddr('enp0s8'))


if __name__ == "__main__":
    main()
票数 90
EN

Stack Overflow用户

发布于 2015-08-19 03:16:50

有时我们有多个网络接口。

查找特定接口的mac地址的简单方法是:

代码语言:javascript
复制
def getmac(interface):

  try:
    mac = open('/sys/class/net/'+interface+'/address').readline()
  except:
    mac = "00:00:00:00:00:00"

  return mac[0:17]

调用该方法很简单

代码语言:javascript
复制
myMAC = getmac("wlan0")
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/159137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档