GNU/Linux >> Tutoriels Linux >  >> Linux

générer un ID unique de machine cohérent

Que diriez-vous de ces deux :

01

Vous pouvez ensuite les combiner et les hacher avec :

11

Pour supprimer le tiret final, ajoutez un autre tube :

28

Comme le souligne @mikeserv dans sa réponse, le nom de l'interface peut changer entre les démarrages. Cela signifie que ce qui est eth0 aujourd'hui pourrait être eth1 demain, donc si vous grep pour 07 vous pourriez obtenir une adresse MAC différente sur différents démarrages. Mon système ne se comporte pas de cette façon donc je ne peux pas vraiment tester mais les solutions possibles sont :

  1. Grep pour 17 dans la sortie de 22 mais conservez-les tous, pas seulement celui correspondant à une carte réseau spécifique. Par exemple, sur mon système j'ai :

    32

    En saisissant les deux adresses MAC et en les faisant passer par 30 , vous devriez pouvoir obtenir un nom unique et stable, quel que soit le nom de la carte réseau :

    40

    Notez que le hachage est différent de ceux ci-dessus car je transmets les deux adresses MAC renvoyées par 40 à 58 .

  2. Créez plutôt un hachage basé sur les UUID de votre ou vos disques durs :

    59

Tout d'abord, veuillez noter que le CPUID n'est définitivement pas un marqueur d'identification unique couramment accessible pour tout système ultérieur à un Intel Pentium III. Bien que le hachage avec des adresses MAC puisse certainement conduire à des marqueurs uniques, cela n'est dû qu'aux qualités uniques des MAC eux-mêmes et le CPUID dans ce cas n'est rien de plus que circonstanciel. De plus, le hachage résultant n'est probablement pas plus unique que l'UUID de la carte mère, ce qui est beaucoup plus facile à récupérer et le processus est beaucoup moins sujet aux erreurs. Depuis wikipedia.org/wiki/cpuid :

EAX=3 :Numéro de série du processeur

Voir aussi:Pentium III § Controverse sur les problèmes de confidentialité

Cela renvoie le numéro de série du processeur. Le numéro de série du processeur a été introduit sur Intel Pentium III, mais en raison de problèmes de confidentialité, cette fonctionnalité n'est plus implémentée sur les modèles ultérieurs (le bit de fonctionnalité PSN est toujours effacé). Les processeurs Efficeon et Crusoe de Transmeta offrent également cette fonctionnalité. Cependant, les processeurs AMD n'implémentent cette fonctionnalité dans aucun modèle de processeur.

Vous pouvez afficher vous-même un cpuid analysé en faisant 62 ou même juste 71 .

Cela vous donne toutes les adresses MAC pour les interfaces réseau reconnues par le noyau Linux, je pense :

61

Il peut être nécessaire de filtrer cette liste si elle peut inclure des cartes réseau virtuelles avec des MAC générés aléatoirement. Vous pouvez le faire avec des drapeaux dans l'appel à 86 directement. Voir 90 pour savoir comment procéder.

Notez également que ce problème n'est pas unique à 105 et doit également être traité si vous utilisez 116 , mais qu'il peut être géré de manière plus fiable avec 125 - qui fait partie du 137 suite réseau et est activement maintenu - qu'il ne le peut avec 148 - qui est membre du 151 package et a vu une version Linux pour la dernière fois en 2001. En raison de l'évolution des fonctionnalités du noyau depuis sa dernière version, 165 est connu pour mal signaler certains indicateurs de fonctionnalité réseau et son utilisation doit être évitée dans la mesure du possible.

Comprenez, cependant, que le filtrage avec des noms d'interface du noyau comme 175 n'est pas un moyen fiable de le faire, car ceux-ci peuvent changer en fonction de leur ordre de détection parallèle par 187 pendant le processus de démarrage. Veuillez consulter Noms de réseau prévisibles pour en savoir plus.

Parce que 199 n'est pas installé sur mon système J'ai d'abord pensé à hacher une liste de numéros de série de disques durs générés comme :

73

Faites 208 pour quelques indices sur l'affinement de cette liste - par type de disque, disons. Considérez également 214 et/ou 227 peut-être.

Les combiner est facile :

80

Comme vous m'avez informé que vous associez les ressources des utilisateurs de votre côté à leurs identifiants uniques, et que les disques durs ne sont pas fiables pour exister, j'ai pensé à changer de tactique.

Cela considéré, j'ai regardé à nouveau dans le système de fichiers et j'ai trouvé le 230 dossier. J'ai vérifié quelques-uns des fichiers :

90

Cependant, celui-ci semble être assez bon, mais je ne publierai pas le résultat :

107

Je suppose que c'est là que 244 obtient une grande partie de ses informations de toute façon et en fait, il y ressemble. Selon 258 vous pouvez également simplifier considérablement votre utilisation de cet outil en spécifiant l'argument :

115

Plus simple encore, cependant, vous pouvez simplement lire le fichier. Notez que ce fichier particulier identifie spécifiquement une carte mère. Voici un extrait du correctif du noyau 2007 qui implémentait à l'origine ces exportations vers le 267 système de fichiers virtuel :

120

Vous pourrez peut-être utiliser ces données seules pour identifier le système - si la carte mère est suffisante. Mais vous pouvez combiner ces informations avec les MAC du système de la même manière que je vous ai montré avec les disques durs :

134

Le noyau Linux peut également générer des UUID pour vous :

147

Ou :

150

Certes, il est généré de manière aléatoire et vous devrez repenser l'attribution de l'ID, mais c'est à peu près aussi simple que d'obtenir get au moins. Et il devrait être assez solide si vous pouvez trouver un moyen de le saisir.

Enfin, sur les systèmes UEFI, cela devient beaucoup plus facile à faire - car chaque variable d'environnement du micrologiciel EFI inclut son propre UUID. La variable d'environnement 275 devrait être présent sur chaque système UEFI, devrait persister les redémarrages et même la plupart mises à jour et modifications du firmware, et tout système Linux avec le 281 le module chargé peut lister l'un ou les deux noms aussi simplement que :

166

L'ancienne forme - 292 est apparemment maintenant obsolète, et sur les nouveaux systèmes devrait être 303 mais, selon les spécifications, l'un ou l'autre devrait être présent dans chaque système UEFI. Avec peu d'effort, vous pouvez définir vos propres variables persistantes de redémarrage et peut-être utiliser davantage le générateur d'UUID du noyau de cette manière. Si vous êtes intéressé, consultez efitools.


De nombreuses distributions modernes fournissent un fichier 312 contenant une chaîne de 32 caractères hexadécimaux très probablement unique. Il provient de systemd, où une page de manuel contient plus d'informations et peut être appropriée à votre objectif.


Linux
  1. 10 façons de générer un mot de passe aléatoire sous Linux

  2. Comment arrêter ou redémarrer Linux

  3. Commande de redémarrage Linux

  4. Commande db_load - générer la base de données db

  5. utiliser random pour générer une chaîne aléatoire dans bash

Présentation de Virtual Machine Manager

Comment générer une clé SSH dans Windows 10

Comment installer RHEL 8 sur une machine virtuelle

Une introduction aux boîtes GNOME (virtualisation) sous Linux

Comment générer des données netflow sous Linux

Linux KVM sur une Virtualbox