GNU/Linux >> Linux Esercitazione >  >> Linux

generare un ID univoco della macchina coerente

Che ne dici di questi due:

02

Puoi quindi combinarli e cancellarli con:

11

Per rimuovere il trattino finale, aggiungi un'altra barra verticale:

29

Come sottolinea @mikeserv nella sua risposta, il nome dell'interfaccia può cambiare tra gli stivali. Ciò significa che ciò che è eth0 oggi potrebbe essere eth1 domani, quindi se esegui il grep per 07 potresti ottenere un indirizzo MAC diverso su stivali diversi. Il mio sistema non si comporta in questo modo quindi non posso davvero testare ma le possibili soluzioni sono:

  1. Grep per 18 nell'output di 23 ma conservali tutti, non solo quello corrispondente a una specifica NIC. Ad esempio, sul mio sistema ho:

    33

    Prendendo entrambi gli indirizzi MAC e passandoli attraverso 30 , dovresti essere in grado di ottenere un nome univoco e stabile, indipendentemente da quale NIC si chiami what:

    41

    Nota che l'hash è diverso da quelli sopra perché sto passando entrambi gli indirizzi MAC restituiti da 40 a 59 .

  2. Crea invece un hash basato sugli UUID dei tuoi dischi rigidi:

    59

Innanzitutto, tieni presente che il CPUID è sicuramente not un indicatore di identificazione univoco comunemente accessibile per qualsiasi sistema successivo a un Intel Pentium III. Sebbene l'hashing con gli indirizzi MAC possa certamente portare a marcatori univoci, ciò è dovuto solo alle qualità uniche dei MAC stessi e il CPUID in quel caso non è altro che circostanziale. Inoltre, è probabile che l'hash risultante non sia più univoco dell'UUID della scheda madre, e questo è molto più facile da recuperare e il processo è molto meno soggetto a errori. Da wikipedia.org/wiki/cpuid:

EAX=3 :Numero di serie del processore

Vedi anche:Pentium III § Controversia sui problemi di privacy

Questo restituisce il numero di serie del processore. Il numero di serie del processore è stato introdotto su Intel Pentium III, ma a causa di problemi di privacy, questa funzione non è più implementata sui modelli successivi (il bit della funzione PSN è sempre cancellato). Anche i processori Efficeon e Crusoe di Transmeta forniscono questa caratteristica. Le CPU AMD, tuttavia, non implementano questa funzione in nessun modello di CPU.

Puoi visualizzare tu stesso un cpuid analizzato eseguendo 62 o anche solo 72 .

Questo ti dà tutti gli indirizzi MAC per le interfacce di rete riconosciute dal kernel Linux, penso:

62

Potrebbe essere necessario filtrare quell'elenco se potrebbe includere nic virtuali con MAC generati casualmente. Puoi farlo con i flag nella chiamata a 86 direttamente. Vedi 90 per informazioni su come farlo.

Si noti inoltre che questo problema non è univoco per 105 e deve essere affrontato anche se usi 116 , ma che può essere gestito in modo più affidabile con 125 - che fa parte del 138 suite di rete e viene mantenuta attivamente, rispetto a quanto può fare con 148 - che è un membro del 151 pacchetto e ha visto l'ultima versione di Linux nel 2001. A causa delle modifiche alle funzionalità del kernel dall'ultima versione, 165 è noto per segnalare erroneamente alcuni flag di funzionalità di rete e il suo utilizzo dovrebbe essere evitato se possibile.

Tieni presente, tuttavia, che filtrare con nomi di interfaccia del kernel come 175 non è un mezzo affidabile per farlo, in quanto questi possono cambiare in base al loro ordine di rilevamento in parallelo da parte di 187 durante il processo di avvio. Per ulteriori informazioni, consulta Predictable Network Names.

Perché 199 non è installato sul mio sistema All'inizio ho pensato di eseguire l'hashing di un elenco di seriali del disco rigido generati come:

74

Esegui 208 per alcuni indizi su come perfezionare quell'elenco, ad esempio per tipo di disco. Considera anche 214 e/o 227 forse.

Combinarli è facile:

80

Come mi hai informato, stai assegnando le risorse degli utenti ai loro ID univoci e non si può fare affidamento sull'esistenza dei dischi rigidi, ho pensato di cambiare approccio.

Ciò considerato, ho esaminato nuovamente il filesystem e ho trovato 230 cartella. Ho controllato alcuni file:

90

Tuttavia, questo sembra essere abbastanza buono, ma non pubblicherò l'output:

108

Mi aspetto che sia qui 244 ottiene comunque molte delle sue informazioni e in effetti sembra proprio così. Secondo 258 puoi anche semplificare molto l'uso di quello strumento specificando l'argomento:

115

Ancora più semplice, però, puoi semplicemente leggere il file. Si noti che questo particolare file identifica specificamente una scheda madre. Ecco un estratto dalla patch del kernel del 2007 che originariamente implementava queste esportazioni al 267 filesystem virtuale:

120

Potresti essere in grado di utilizzare solo quei dati per identificare il sistema, se la scheda madre è sufficiente. Ma puoi combinare queste informazioni con i MAC del sistema nello stesso modo in cui ho dimostrato che potresti fare con i dischi rigidi:

135

Il kernel Linux può anche generare UUID per te:

147

Oppure:

150

Certo, è generato in modo casuale e dovrai ripensare all'assegnazione dell'ID, ma è facile quanto ottenere almeno. E dovrebbe essere abbastanza solido se riesci a trovare un modo per digitarlo.

Infine, sui sistemi UEFI questo diventa molto più facile da fare, poiché ogni variabile di ambiente del firmware EFI include il proprio UUID. La variabile d'ambiente 275 dovrebbe essere presente su ogni sistema UEFI, dovrebbe persistere durante i riavvii e persino la maggior parte aggiornamenti e modifiche del firmware e qualsiasi sistema Linux con 281 il modulo caricato può elencare uno o entrambi i nomi semplicemente come:

166

La forma più vecchia - 293 è apparentemente ora deprecato e sui sistemi più recenti dovrebbe essere 303 ma, secondo le specifiche, l'uno o l'altro dovrebbe essere presente in ogni sistema UEFI. Con poco sforzo, puoi definire le tue variabili persistenti di riavvio e forse fare un uso maggiore del generatore di UUID del kernel in questo modo. Se sei interessato, dai un'occhiata a efitools.


Molte distribuzioni moderne forniscono un file 312 contenente una stringa esadecimale di 32 caratteri molto probabilmente univoca. Ha origine da systemd, dove una manpage contiene più informazioni e potrebbe essere appropriata per il tuo scopo.


Linux
  1. Come generare un hash hardware unico?

  2. 8 modi per generare password casuali in Linux

  3. Comando db_load – genera database db

  4. Come generare un elenco di righe univoche nel file di testo utilizzando uno script di shell Linux?

  5. Ottenere informazioni sull'hardware di una macchina in Linux

Un'introduzione a Virtual Machine Manager

Come generare una chiave SSH in Windows 10

Come installare RHEL 8 su una macchina virtuale

Un'introduzione a GNOME Boxes (virtualizzazione) su Linux

usando random per generare una stringa casuale in bash

Autonomia totale della macchina