21 votos

cómo generar un azar de la dirección MAC de la línea de comandos de Linux

¿Cómo puedo generar un azar de la dirección MAC de la línea de comandos de Linux?

Busco una solución que sólo requiere de herramientas estándar que se encuentran comúnmente en la línea de comandos de Linux.

La dirección MAC se utiliza para un huésped KVM.

41voto

Ryan Sampson Puntos 2898

Yo uso

macaddr=$(echo $FQDN|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/02:\1:\2:\3:\4:\5/')

La ventaja de este método, a través de una completamente aleatorio, es que es posible reproducir de forma fiable la dirección MAC basado en el FQDN de la máquina, que me parece útil a veces. El 02 para el primer octeto establece el "asignados localmente" bits, lo que hace evidente que no es un proveedor de dirección MAC, y garantiza que usted no colisionan con un real NIC de la dirección MAC.

Si usted necesita para generar múltiples direcciones MAC por host, he usado para concatenar el nombre de dominio con el nombre de puente para conectar la interfaz; esto hizo un buen trabajo de difusión de las cosas para diferentes tarjetas de red.

7voto

flolo Puntos 242

La publicación de los guiones son buenos, pero quiero añadir una advertencia: la Mente el Cumpleaños (paradoxon)!

Se trata del hecho de que incluso si usted tiene sólo 23 personas, la probabilidad es ya el 50% de los que 2 de ellos tienen los cumpleaños en el mismo día.

Depende de tu situación, ¿cómo lo usa, pero si genera la MAC de forma aleatoria, en aproximadamente 1 millón de tu oportunidad para un mac número de choque es de 40% a los 2 millones es ya el 87%!

Si usted necesita sólo un par esto está bien, pero cuando usted mantener una granja de servidores con cientos de servidores, cada uno de ellos hosting decenas de máquinas virtuales, o si utiliza el mac como índice en algunos db para la contabilidad y la necesidad de uniques ¡ten cuidado!

5voto

MadHatter Puntos 44059
myserver% perl -e 'for ($i=0;$i<6;$i++){@m[$i]=int(rand(256));} printf "%X:%X:%X:%X:%X:%X\n",@m;'
55:C2:A5:FA:17:74

Ah, el ol' Ejército Suizo Motosierra cabalga de nuevo. Y por la vía de la versión 0.2, estoy sin vergüenza robar womble excelente punto sobre el primer octeto de ser 02:

myserver% perl -e 'for ($i=0;$i<5;$i++){@m[$i]=int(rand(256));} printf "02:%X:%X:%X:%X:%X\n",@m;'
02:8E:94:A3:47:26

4voto

Aaron Toponce Puntos 121

Sé que este post es viejo, pero para los futuros visitantes, si quieres un pseudo aleatorios criptográficamente segura dirección MAC, sin estar limitado a 0x02 como la OUI, he aquí una rápida en su mayoría de una plataforma agnóstica generador:

$ printf '%02x' $((0x$(od /dev/urandom -N1 -t x1 -An | cut -c 2-) & 0xFE | 0x02)); od /dev/urandom -N5 -t x1 -An | sed 's/ /:/g'

2voto

gucki Puntos 386

Aquí es de otro, basado en wombie la respuesta:

macaddr=$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/')
echo $macaddr

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: