Python 2.5 には、(少なくとも 1 つのバージョンで) MAC アドレスを必要とする uuid 実装が含まれています。 Mac 検出機能を独自のコードに簡単にインポートできます:
from uuid import getnode as get_mac
mac = get_mac()
戻り値は 48 ビット整数の MAC アドレスです。
特定のローカル インターフェイスの MAC を取得するための Linux でのこの問題に対する純粋な Python ソリューションは、もともと vishnubob によってコメントとして投稿され、この activestate レシピで Ben Mackey によって改善されました
#!/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 互換コードです:
#!/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()