Cómo generar numeros de MAC aleatoriamente

Imagen de Epe

Muy al inicio lo hacía así a lo caballo: tomando un numero MAC y modificándolo, pero uno de aquellos días leyendo (pues para eso escriben la documentación, para leer) me dí cuenta que Xen reservó todo el rango:

00:16:3e:XX:YY:ZZ

Manejamos decenas de máquinas virtuales diariamente en nuestro negocio y ya la "generación cerebral pseudoaleatoria de numeros" me estaba fallando, así que me dije: bueno, por qué a nadie se le ha ocurrido lo que a mí, en crear un script para generar aleatoriamente números?

Creé un tremendo script, sólo para darme cuenta que alguien ya lo había hecho! (eso pasa por NO leer la documentación).

Disculpen, le encontré en un doc de RedHat, pero para que no se olvide aquí le dejo puesto:


vi /usr/sbin/macgen.py

pongo:

#! /usr/bin/python
# macgen.py script generates a MAC address for Xen guests
#
import random
mac = [ 0x00, 0x16, 0x3e,
random.randint(0x00, 0x7f),
random.randint(0x00, 0xff),
random.randint(0x00, 0xff) ]
print ':'.join(map(lambda x: "%02x" % x, mac))

Después le das derecho de ejecución :
chmod +x /usr/sbin/macgen.py

y ya puedes invocarlo cuantas veces quieras, mira:

[root@xen01 ~]# macgen.py
00:16:3e:4e:5c:0a
[root@xen01 ~]# macgen.py
00:16:3e:34:3c:01
[root@xen01 ~]# macgen.py
00:16:3e:50:ec:04
[root@xen01 ~]# macgen.py
00:16:3e:04:e8:d9

La MAC es un protocolo de capa 2 por lo que sólo funciona en redes físicas, no atraviesa ruteadores ni nada por el estilo, por lo que el único requerimiento es que este número no coincida para máquinas que estén presentes en la misma red.