Cómo obtener una dirección MAC remota en Python con bibliotecas integradas

Aquí está el script que usa el módulo de subproceso en el sistema operativo Linux.

La idea es utilizar el comando del sistema para hacer ping al IP del dispositivo remoto y obtener la dirección MAC de la lista ARP del sistema.

subproceso de importación
sistema de importación

ip = sys.argv [1]

# ping ip
p = subprocess.Popen ([‘ping’, ip, ‘-c1’], stdout = subprocess.PIPE,
stderr = subproceso.PIPE)

fuera, err = p.communicate ()

# lista de arp
p = subproceso.Popen ([” arp ‘,’ -n ‘], stdout = subproceso.PIPE,
stderr = subproceso.PIPE)

fuera, err = p.communicate ()

tratar:
arp = [x para x in out.split (‘\ n’) si ip in x] [0]
excepto IndexError:
sys.exit (1) # no se encontró ninguna entrada arp
más:
# obtener la dirección mac de la lista arp
# error: cuando la IP no existe en la red local
# esto imprimirá el nombre de la interfaz
print ” .join (arp.split ()). split () [2]

El script todavía tiene errores, cuando la IP no existe en la red local, imprimirá el nombre de la interfaz.

Puede encontrar su dirección MAC con el siguiente código:

desde uuid import getnode como get_mac
mac = get_mac ()
‘:’. join ((“% 012X”% mac) [i: i + 2] para i en el rango (0, 12, 2)

Puede instalar el módulo de Python anterior con el siguiente comando:

pip install uuid

Como otros han descrito aquí, puede escribir el script para que la máquina entregue su propia dirección MAC, pero si el dispositivo no está en su segmento de red real, sabiendo que la dirección MAC probablemente no le comprará nada.

Puede verificar este desbordamiento de pila: Obteniendo la dirección MAC