GNU/Linux >> Znalost Linux >  >> Linux

Získání MAC adresy

Python 2.5 obsahuje implementaci uuid, která (alespoň v jedné verzi) potřebuje mac adresu. Funkci vyhledávání mac můžete snadno importovat do vlastního kódu:

from uuid import getnode as get_mac
mac = get_mac()

Návratová hodnota je mac adresa jako 48bitové celé číslo.


Čisté pythonové řešení tohoto problému pod Linuxem pro získání MAC pro konkrétní místní rozhraní, původně zveřejněné jako komentář od vishnuboba a vylepšené Benem Mackeym v tomto receptu na aktivní stav

#!/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')

Toto je kód kompatibilní s 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()

Linux
  1. Jak změnit MAC adresu na CentOS 8

  2. Jak změnit/podvrhnout MAC adresu v Debianu 10

  3. Nastavení trvalé adresy Mac v Ubuntu 14.04?

  1. Jak získat MAC adresu WiFi síťového rozhraní?

  2. Získejte MAC adresu pomocí shell skriptu

  3. Účel adresy sendto pro C raw socket?

  1. Linux získává všechny názvy síťových rozhraní

  2. Tisk mac adresy do souboru

  3. Příkaz Shell pro získání IP adresy?