GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Generieren Sie eine konsistente eindeutige Maschinen-ID

Wie wäre es mit diesen beiden:

07

Sie können sie dann kombinieren und hashen mit:

17

Um den abschließenden Bindestrich zu entfernen, fügen Sie eine weitere Pipe hinzu:

24

Wie @mikeserv in seiner Antwort betont, kann sich der Schnittstellenname zwischen den Bootvorgängen ändern. Das bedeutet, dass das, was heute eth0 ist, morgen eth1 sein kann, also wenn Sie nach 03 suchen Möglicherweise erhalten Sie bei verschiedenen Booten eine andere MAC-Adresse. Mein System verhält sich nicht so, daher kann ich es nicht wirklich testen, aber mögliche Lösungen sind:

  1. Grep für 13 in der Ausgabe von 28 aber behalten Sie alle, nicht nur die, die einer bestimmten NIC entspricht. Zum Beispiel habe ich auf meinem System:

    38

    Indem Sie sich beide MAC-Adressen schnappen und sie durch 36 leiten , sollten Sie in der Lage sein, einen eindeutigen und stabilen Namen zu erhalten, unabhängig davon, welche NIC wie heißt:

    46

    Beachten Sie, dass sich der Hash von den obigen unterscheidet, da ich beide MAC-Adressen übergebe, die von 46 zurückgegeben werden bis 54 .

  2. Erstellen Sie stattdessen einen Hash basierend auf den UUIDs Ihrer Festplatte(n):

    55

Beachten Sie zunächst, dass die CPUID definitiv nicht ist ein allgemein zugänglicher, eindeutig identifizierender Marker für jedes System nach einem Intel Pentium III. Während das Hashing mit MAC-Adressen sicherlich zu eindeutigen Markierungen führen kann, liegt dies nur an den einzigartigen Eigenschaften der MACs selbst, und die CPUID ist in diesem Fall nichts weiter als umständlich. Darüber hinaus ist der resultierende Hash wahrscheinlich nicht eindeutiger als die UUID des Motherboards, und das ist viel einfacher abzurufen und der Prozess ist viel weniger fehleranfällig. Von wikipedia.org/wiki/cpuid:

EAX=3 :Seriennummer des Prozessors

Siehe auch:Pentium III § Kontroverse um Datenschutzfragen

Dies gibt die Seriennummer des Prozessors zurück. Die Prozessorseriennummer wurde bei Intel Pentium III eingeführt, aber aus Datenschutzgründen ist diese Funktion bei späteren Modellen nicht mehr implementiert (PSN-Funktionsbit wird immer gelöscht). Die Efficeon- und Crusoe-Prozessoren von Transmeta bieten diese Funktion ebenfalls. AMD-CPUs implementieren diese Funktion jedoch in keinem CPU-Modell.

Sie können eine geparste CPU selbst anzeigen, indem Sie 68 ausführen oder auch nur 77 .

Dadurch erhalten Sie alle MAC-Adressen für die vom Linux-Kernel erkannten Netzwerkschnittstellen, denke ich:

67

Es kann notwendig sein, diese Liste zu filtern, wenn sie virtuelle Netzwerkkarten mit zufällig generierten MACs enthalten könnte. Sie können dies mit Flags im Aufruf von 82 tun direkt. Siehe 96 um Informationen darüber zu erhalten, wie Sie dies tun können.

Beachten Sie auch, dass dieses Problem nicht nur bei 101 auftritt und muss auch behandelt werden, wenn Sie 112 verwenden , aber dass es zuverlässiger mit 121 gehandhabt werden kann - der Teil des 133 ist network suite und wird aktiv gewartet - als mit 144 - das Mitglied der 157 ist Paket und sah zuletzt 2001 eine Linux-Veröffentlichung. Aufgrund von Änderungen im Kernel seit der letzten Veröffentlichung, 161 ist dafür bekannt, einige Netzwerkfunktions-Flags falsch zu melden, und seine Verwendung sollte nach Möglichkeit vermieden werden.

Beachten Sie jedoch, dass das Filtern mit Kernel-Schnittstellennamen wie 171 ist hierfür kein zuverlässiges Mittel, da sich diese je nach Reihenfolge der parallelen Erkennung durch 183 ändern können während des Bootvorgangs. Weitere Informationen hierzu finden Sie unter Vorhersagbare Netzwerknamen.

Weil 195 ist nicht auf meinem System installiert. Ich dachte zuerst, eine Liste von Festplattenserien zu hashen, die wie folgt generiert wurden:

79

Führen Sie 204 aus für einige Hinweise zur Verfeinerung dieser Liste - sagen wir mal nach Festplattentyp. Beachten Sie auch 210 und/oder 223 vielleicht.

Sie zu kombinieren ist einfach:

86

Da Sie mir mitgeteilt haben, dass Sie die Ressourcen der Benutzer auf Ihrer Seite mit ihren eindeutigen IDs verknüpfen und dass Festplatten nicht zuverlässig existieren, dachte ich, ich sollte meine Vorgehensweise ändern.

Daraufhin habe ich nochmal ins Dateisystem geschaut und den 236 gefunden Mappe. Ich habe ein paar der Dateien überprüft:

96

Allerdings scheint dieser ziemlich gut zu sein, aber ich werde die Ausgabe nicht veröffentlichen:

103

Ich vermute, dort steht 240 bekommt sowieso viele seiner Informationen und sieht tatsächlich so aus. Gemäß 254 Sie können die Verwendung dieses Tools auch erheblich vereinfachen, indem Sie das Argument angeben:

111

Noch einfacher ist jedoch, dass Sie die Datei einfach lesen können. Beachten Sie, dass diese bestimmte Datei speziell ein Motherboard identifiziert. Hier ist ein Auszug aus dem Kernel-Patch von 2007, der diese Exporte ursprünglich in 263 implementierte virtuelles Dateisystem:

126

Möglicherweise können Sie diese Daten allein verwenden, um das System zu identifizieren - wenn das Motherboard ausreicht. Aber Sie können diese Informationen mit den MACs des Systems auf die gleiche Weise kombinieren, wie ich es Ihnen mit Festplatten gezeigt habe:

130

Der Linux-Kernel kann auch UUIDs für Sie generieren:

143

Oder:

156

Zugegeben, es wird zufällig generiert und Sie müssen die ID-Zuweisung überdenken, aber es ist so einfach, wie es bekommen wird wenigstens. Und es sollte ziemlich solide sein, wenn Sie einen Weg finden, es zu kodieren.

Auf UEFI-Systemen wird dies schließlich viel einfacher, da jede EFI-Firmware-Umgebungsvariable ihre eigene UUID enthält. Die Umgebungsvariable 271 sollte auf jedem UEFI-System vorhanden sein, Neustarts bestehen bleiben und sogar die meisten Firmware-Upgrades und -Modifikationen und jedes Linux-System mit dem 287 Das geladene Modul kann einen oder beide Namen so einfach auflisten wie:

162

Die ältere Form - 298 ist anscheinend jetzt veraltet und sollte auf neueren Systemen 309 sein aber laut Spezifikation sollte das eine oder andere in jedem UEFI-System vorhanden sein. Mit wenig Aufwand können Sie Ihre eigenen Reboot-Persistent-Variablen definieren und auf diese Weise den UUID-Generator des Kernels vielleicht besser nutzen. Wenn Sie interessiert sind, schauen Sie in efitools nach.


Viele moderne Distributionen liefern eine Datei 318 enthält eine höchstwahrscheinlich eindeutige hexadezimale Zeichenfolge mit 32 Zeichen. Es stammt von systemd, wo eine Manpage mehr Informationen enthält und für Ihren Zweck geeignet sein kann.


Linux
  1. Wie man Linux herunterfährt oder neu startet

  2. Linux-Neustartbefehl

  3. 8 Möglichkeiten zum Generieren von zufälligen Passwörtern in Linux

  4. Gesamtlaufzeit der Maschine

  5. Konsistente Linux-Geräteaufzählung

Eine Einführung in Virtual Machine Manager

So generieren Sie einen SSH-Schlüssel in Windows 10

So installieren Sie RHEL 8 auf einer virtuellen Maschine

Eine Einführung in GNOME Boxes (Virtualisierung) unter Linux

Abrufen von Informationen über die Hardware einer Maschine in Linux

Linux KVM auf einer Virtualbox