eu uso
macaddr=$(echo $FQDN|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/02:\1:\2:\3:\4:\5/')
A vantagem desse método, em relação a um número completamente aleatório, é que é possível reproduzir de forma confiável o endereço MAC com base no FQDN da máquina, que às vezes acho útil. O 02
primeiro octeto define apenas o bit "atribuído localmente", o que torna óbvio que não é um endereço MAC fornecido pelo fornecedor e garante que você não colidirá com o endereço MAC de uma NIC real.
Se você precisar gerar vários endereços MAC por host, eu costumava concatenar o FQDN com o nome da ponte à qual conectar a interface; isso fez um bom trabalho em espalhar as coisas para diferentes placas de rede.
tr -dc A-F0-9 < /dev/urandom | head -c 10 | sed -r 's/(..)/\1:/g;s/:$//;s/^/02:/'
Os scripts publicados são bons, mas quero acrescentar um aviso: Cuidado com o aniversário (paradoxon)!
Isso se deve ao fato de que, mesmo que você tenha apenas 23 pessoas, a chance já é de 50% de que 2 deles tenham aniversário no mesmo dia.
Depende do seu cenário, como você o usa, mas se você gerar o MACS aleatoriamente, em aproximadamente 1 milhão de chances de um confronto com o número de mac será de 40% a 2 milhões, já será de 87%!
Se você precisar de apenas alguns, tudo bem, mas quando você mantém um farm de servidores com centenas de servidores, cada um hospedando dezenas de máquinas virtuais, ou se você usa os macs como índice em alguns bancos de dados para contabilidade e precisa de cuidados especiais !
fonte
Ah, a velha serra elétrica do exército suíço volta a andar. E, na versão 0.2, estou descaradamente roubando o excelente argumento de womble sobre o primeiro octeto ser 02:
fonte
Essas variantes também funcionam.
mais longo:
ou mais curto:
O consumo de carga de ambas as variantes é muito semelhante, de acordo com a medição rápida com o tempo.
fonte
fold -w2|paste -sd: -
vez desed
. Ased
solução é provavelmente mais fácil de lembrar, pois usa uma ferramenta mais familiar - embora eu tenha aprendido mais com a resposta dele / dela.ec
tão 11101100 em binário ...Sei que este post é antigo, mas para futuros visitantes, se você quiser um endereço MAC pseudo-aleatório criptograficamente seguro, sem se limitar a 0x02 como OUI, aqui está um rápido gerador independente de plataforma:
fonte
Aqui está outro, baseado na resposta do wombie:
fonte
Aqui estão cinco outras opções, que usam bits aleatórios para o bit menos significativo do byte mais significativo que indica se o endereço é unicast ou multicast e para o segundo bit menos significativo do byte mais significativo que indica se o endereço é administrado universal ou localmente.
jot
vem com OS X e BSDs, mas não com a maioria das distribuições Linux. Emjot
-w
altera o formato,-s
muda o separador, e-r
gera números aleatórios.od
está no POSIX, mashexdump
não está.OS X
od
(/usr/bin/od
abaixo) usa um formato de saída diferente do GNUod
:Em OS X
od
opções colocadas após um argumento para um arquivo de entrada são tratados como os nomes dos arquivos de entrada, de modo que o comando na resposta por Aaron Toponce lê/dev/urandom
indefinidamente com OS X dood
.fonte
Você pode apenas adicionar um $ RANDOM após $ FQDN e isso fornecerá endereços MAC aleatórios toda vez que você o executar. Isso é especialmente útil para pessoas que desejam criar vms de backup usando instantâneos ou clones de vms.
fonte
Eu uso:
fonte
One-liner do Python:
fonte
Apenas por diversão, aqui está uma versão pura do bash, testada com o lançamento do Bash 4.4.12 (1):
Primeira linha lê 6 caracteres
/dev/urandom
; em seguida, usando o conjunto de caracteres C, imprima o valor hexadecimal preenchido com 0 de cada caractere separado por dois pontos (a nova linha é opcional, mas útil para imprimir o valor).A extração do valor de um caractere usando printf é definida na documentação do POSIX printf :
fonte