yo suelo
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 basada en el FQDN de la máquina, lo que a veces encuentro útil. El 02
primer octeto solo establece el bit "asignado localmente", lo que hace obvio que no es una dirección MAC proporcionada por el proveedor, y garantiza que no colisionará con una dirección MAC de una NIC real.
Si necesita generar múltiples direcciones MAC por host, solía concatenar el FQDN con el nombre del puente para conectar la interfaz; esto hizo un buen trabajo al difundir las cosas para diferentes NIC.
tr -dc A-F0-9 < /dev/urandom | head -c 10 | sed -r 's/(..)/\1:/g;s/:$//;s/^/02:/'
Los guiones publicados son buenos, pero quiero agregar una advertencia: ¡Cuidado con el cumpleaños (paradoja)!
Viene del hecho de que incluso si tiene solo 23 personas, la probabilidad de que 2 de ellos cumplan años el mismo día es ya del 50%.
Depende de su escenario cómo lo use, pero si genera el MACS al azar, con aproximadamente 1 millón, su probabilidad de un choque de números mac es del 40% a 2 millones, ¡ya es del 87%!
Si necesita solo un par, esto está bien, pero cuando mantiene una granja de servidores con cientos de servidores, cada uno de ellos aloja decenas de máquinas virtuales, o si usa los Mac como índice en alguna base de datos para la contabilidad y necesita exclusivos, tenga cuidado !
fuente
Ah, la vieja motosierra del ejército suizo vuelve a montar. Y a través de la versión 0.2, estoy robando descaradamente el excelente punto de womble sobre el primer octeto que es 02:
fuente
Estas variantes también funcionan.
más:
o más corto:
El consumo de carga de ambas variantes es muy similar según la medición rápida con el tiempo.
fuente
fold -w2|paste -sd: -
lugar desed
. Lased
solución es probablemente más fácil de recordar, ya que utiliza una herramienta más familiar, aunque aprendí más de su respuesta.ec
11101100 en binario ...Sé que esta publicación es antigua, pero para futuros visitantes, si desea una dirección MAC pseudoaleatoria criptográficamente segura, sin limitarse a 0x02 como OUI, aquí hay un generador agnóstico de plataforma en su mayoría rápido:
fuente
Aquí hay otro, basado en la respuesta de wombie:
fuente
Aquí hay otras cinco opciones, todas las cuales usan bits aleatorios para el bit menos significativo del byte más significativo que indica si la dirección es unidifusión o multidifusión y para el segundo bit menos significativo del byte más significativo que indica si la dirección es administrada universal o localmente.
jot
viene con OS X y BSD pero no con la mayoría de las distribuciones de Linux. Enjot
-w
cambia el formato,-s
cambia el separador y-r
genera números aleatorios.od
está en POSIX perohexdump
no lo está.OS X
od
(/usr/bin/od
abajo) usa un formato de salida diferente que GNUod
:En las
od
opciones de OS X colocadas después de un argumento para un archivo de entrada se tratan como los nombres de los archivos de entrada, por lo que el comando en la respuesta de Aaron Toponce se lee/dev/urandom
indefinidamente con OS X'sod
.fuente
Simplemente puede agregar un $ RANDOM después de $ FQDN y esto le daría direcciones MAC aleatorias cada vez que lo ejecute. Esto es especialmente útil para las personas que desean crear una copia de seguridad de vms utilizando instantáneas o clones de vms.
fuente
Yo suelo:
fuente
Python one-liner:
fuente
Solo por diversión, aquí hay una versión de bash puro, probada contra Bash 4.4.12 (1) -lanzamiento:
La primera línea lee 6 caracteres de
/dev/urandom
; luego, utilizando el juego de caracteres C, imprima el valor hexadecimal lleno de 0 de cada carácter separado con dos puntos (la nueva línea es opcional pero útil para imprimir el valor).La extracción del valor de un carácter usando printf se define en la documentación POSIX printf :
fuente