GNU/Linux >> Tutoriales Linux >  >> Linux

cómo generar una dirección MAC aleatoria desde la línea de comandos de Linux

Solución 1:

Yo uso

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

El beneficio de este método, sobre un número completamente aleatorio, es que es posible reproducir de manera confiable la dirección MAC en función del FQDN de la máquina, lo que a veces me resulta útil. El 02 para el primer octeto simplemente establece el bit "asignado localmente", lo que hace obvio que no es una dirección MAC proporcionada por un proveedor y garantiza que no colisionará con una dirección MAC de NIC real.

Si necesita generar varias direcciones MAC por host, solía concatenar el FQDN con el nombre del puente para conectar la interfaz; esto hizo un buen trabajo al distribuir las cosas para diferentes NIC.

Solución 2:

Los guiones publicados son buenos, pero quiero agregar una advertencia:¡Cuidado con el cumpleaños (paradoja)!

Proviene del hecho de que incluso si solo tienes 23 personas, la probabilidad ya es del 50 % de que 2 de ellas cumplan años el mismo día.

Depende de su escenario cómo lo use, pero si genera el MACS aleatoriamente, con aproximadamente 1 millón, su probabilidad de que un número de mac coincida es del 40 % con 2 millones, ¡ya es del 87 %!

Si necesita solo un par, está bien, pero cuando mantiene una granja de servidores con cientos de servidores, cada uno de los cuales aloja decenas de máquinas virtuales, o si usa macs como índice en alguna base de datos para la contabilidad y necesita únicos, tenga cuidado. !

Solución 3:

Estas variantes también funcionan.

más largo:

openssl rand -hex 6 | sed 's/\(..\)\(..\)\(..\)\(..\)\(..\)\(..\)/\1:\2:\3:\4:\5:\6/'

o más corto:

openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/:$//'

El consumo de carga de ambas variantes es muy similar según mediciones rápidas con el tiempo.

Solución 4:

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, la vieja motosierra del ejército suizo vuelve a andar. Y por medio de la versión 0.2, estoy robando descaradamente el excelente punto de womble acerca de que el primer octeto es 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

Solución 5:

Sé que esta publicación es antigua, pero para los futuros visitantes, si desea una dirección MAC pseudoaleatoria criptográficamente segura, sin limitarse a 0x02 como OUI, aquí hay un generador rápido, en su mayoría independiente de la plataforma:

$ 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'

Linux
  1. Cómo ejecutar consultas MySQL/MariaDB directamente desde la línea de comandos de Linux

  2. ¿Cómo actualizar registros A desde la interfaz de línea de comandos en Linux?

  3. Linux:¿cómo iniciar una partición de Windows desde la línea de comandos de Grub?

  4. ¿Cómo generar imágenes CMYK a través de la línea de comandos en Linux?

  5. ¿Cómo invocar una macro de OpenOffice desde la línea de comandos de Linux?

Programe hardware desde la línea de comandos de Linux

Cómo averiguar la dirección IP pública desde la línea de comandos en Linux

Cómo buscar archivos desde la línea de comandos de Linux

Eliminar directorio en Linux:cómo eliminar una carpeta desde la línea de comandos

Cómo encontrar la dirección IP en la línea de comandos de Linux

Cómo ejecutar TeX desde la interfaz de línea de comandos en Linux