GNU/Linux >> Linux Esercitazione >  >> Linux

come generare un indirizzo MAC casuale dalla riga di comando di Linux

Soluzione 1:

io uso

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

Il vantaggio di questo metodo, rispetto a un numero completamente casuale, è che è possibile riprodurre in modo affidabile l'indirizzo MAC in base all'FQDN della macchina, che a volte trovo utile. Il 02 per il primo ottetto imposta semplicemente il bit "assegnato localmente", il che rende ovvio che non si tratta di un indirizzo MAC fornito dal fornitore e garantisce che non entrerai in collisione con l'indirizzo MAC di una scheda di rete reale.

Se è necessario generare più indirizzi MAC per host, ero solito concatenare l'FQDN con il nome del bridge a cui connettere l'interfaccia; questo ha fatto un buon lavoro nel diffondere le cose per diversi NIC.

Soluzione 2:

Gli script pubblicati sono buoni, ma voglio aggiungere un avvertimento:Attenzione al compleanno (paradosso)!

Deriva dal fatto che anche se hai solo 23 persone, la probabilità è già del 50% che 2 di loro compiano gli anni lo stesso giorno.

Dipende dal tuo scenario come lo usi, ma se generi il MACS in modo casuale, a circa 1 milione la tua possibilità di uno scontro di numeri mac è del 40% a 2 milioni è già dell'87%!

Se te ne servono solo un paio va bene, ma quando mantieni una server farm con centinaia di server, ognuno dei quali ospita decine di macchine virtuali, o se usi i mac come indice in qualche db per la contabilità e ti servono unici fai attenzione !

Soluzione 3:

Anche queste varianti funzionano.

più lungo:

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

o più breve:

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

Il consumo di carico di entrambe le varianti è molto simile in base alla misurazione rapida nel tempo.

Soluzione 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 vecchia motosega dell'esercito svizzero va di nuovo. E tramite la versione 0.2, sto spudoratamente rubando l'eccellente punto di vista di womble sul fatto che il primo ottetto è 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

Soluzione 5:

So che questo post è vecchio, ma per i futuri visitatori, se desideri un indirizzo MAC pseudocasuale crittograficamente sicuro, senza essere limitato a 0x02 come OUI, ecco un generatore veloce per lo più indipendente dalla piattaforma:

$ 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. Configura un'area di lavoro Linux in remoto dalla riga di comando

  2. Come eseguire query MySQL/MariaDB direttamente dalla riga di comando di Linux

  3. Come aggiornare un record dall'interfaccia della riga di comando in Linux?

  4. Come richiamare una macro di Openoffice dalla riga di comando di Linux?

  5. Come impostare l'indirizzo IP da C in Linux

Programma hardware dalla riga di comando di Linux

Come scoprire l'indirizzo IP pubblico dalla riga di comando su Linux

Come cercare file dalla riga di comando di Linux

Rimuovi directory in Linux - Come eliminare una cartella dalla riga di comando

Come trovare l'indirizzo IP nella riga di comando di Linux

Come ottengo il mio indirizzo IP dalla riga di comando?