GNU/Linux >> Tutoriels Linux >  >> Linux

comment générer une adresse MAC aléatoire à partir de la ligne de commande Linux

Solution 1 :

J'utilise

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

L'avantage de cette méthode, par rapport à un nombre complètement aléatoire, est qu'il est possible de reproduire de manière fiable l'adresse MAC basée sur le FQDN de la machine, ce que je trouve parfois utile. Le 02 pour le premier octet, il suffit de définir le bit "attribué localement", ce qui indique clairement qu'il ne s'agit pas d'une adresse MAC fournie par le fournisseur et garantit que vous n'entrerez pas en collision avec l'adresse MAC d'une véritable carte réseau.

Si vous avez besoin de générer plusieurs adresses MAC par hôte, j'avais l'habitude de concaténer le FQDN avec le nom du pont auquel connecter l'interface ; cela a fait du bon travail pour répartir les choses pour différentes cartes réseau.

Solution 2 :

Les scripts postés sont bons, mais je veux ajouter un avertissement :Attention à l'anniversaire (paradoxe) !

Cela vient du fait que même si vous n'avez que 23 personnes, il y a déjà 50 % de chances que 2 d'entre elles aient leur anniversaire le même jour.

Cela dépend de votre scénario, comment vous l'utilisez, mais si vous générez le MACS de manière aléatoire, à environ 1 million, votre chance d'avoir un conflit de numéros mac est de 40 % à 2 millions, elle est déjà de 87 % !

Si vous n'avez besoin que de quelques-uns, c'est correct, mais lorsque vous gérez une batterie de serveurs avec des centaines de serveurs, chacun d'eux hébergeant des dizaines de machines virtuelles, ou si vous utilisez les macs comme index dans une base de données pour la comptabilité et que vous avez besoin d'uniques, soyez prudent !

Solution 3 :

Ces variantes fonctionnent également.

plus longtemps :

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

ou plus court :

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

La consommation de charge des deux variantes est très similaire selon une mesure rapide avec le temps.

Solution 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 vieille tronçonneuse de l'armée suisse roule à nouveau. Et avec la version 0.2, je vole sans vergogne l'excellent point de womble sur le fait que le premier octet est 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

Solution 5 :

Je sais que ce message est ancien, mais pour les futurs visiteurs, si vous voulez une adresse MAC pseudo-aléatoire cryptographiquement sécurisée, sans être limité à 0x02 comme OUI, voici un générateur rapide principalement indépendant de la plate-forme :

$ 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. Linux - Comment démarrer une partition Windows à partir de la ligne de commande Grub ?

  2. Comment invoquer une macro Openoffice à partir de la ligne de commande Linux ?

  3. Comment puis-je copier un dossier à partir de la ligne de commande Linux ?

  4. Comment puis-je obtenir mon adresse IP à partir de la ligne de commande ?

  5. Comment exécuter TeX à partir de l'interface de ligne de commande sous Linux

Programmer le matériel à partir de la ligne de commande Linux

Comment trouver une adresse IP publique à partir de la ligne de commande sous Linux

Comment rechercher des fichiers à partir de la ligne de commande Linux

Supprimer le répertoire sous Linux - Comment supprimer un dossier de la ligne de commande

Comment trouver une adresse IP dans la ligne de commande Linux

Comment envoyer un message à mon websocket socket.io à partir de la ligne de commande sous Linux ?