Sto cercando di trovare qualcosa che possa essere usato come stringa/numero univoco per il mio script, corretto in una macchina e facilmente ottenibile (multipiattaforma). Presumo che una macchina abbia una scheda di rete. Non ho bisogno che sia davvero unico, ma il necessario è che dovrebbe essere risolto a lungo termine e il più raro possibile.Identificatore fisso per una macchina (uuid.getnode)
So che il MAC può essere modificato e probabilmente farei un avvertimento al riguardo nella mia sceneggiatura, tuttavia non mi aspetto che qualcuno cambi il MAC ogni mattina.
Quello che mi è venuta è uuid.getnode()
, ma nel docs c'è:
Se tutti i tentativi di ottenere l'indirizzo hardware falliscono, si sceglie un numero casuale a 48 bit
fa significa che per ogni chiamata di funzione ottengo un altro numero casuale, quindi non è possibile utilizzarlo se il MAC non è ottenibile?
... su una macchina con più interfacce di rete può essere restituito l'indirizzo MAC di uno qualsiasi di essi.
Questa frase significa getnode()
ottiene un MAC casuale (o primo) da tutti disponibili? Cosa succederebbe se ottenesse MAC A alla prima esecuzione e MAC B la prossima volta? Non ci sarebbe alcun problema se avessi una lista fissa (ordinata, concatenata, tadaaa!)
Sto chiedendo perché non ho modo di testarlo da solo.
non sono in grado di ottenere uuid Android con questo codice. Sto usando Android marshmallow e installato l'emulatore di terminale su di esso posso vedere l'elenco completo di 'getprop' ma' ril.serialnumber' non esiste. ha bisogno del permesso di root? – Gahan
@Gahan vedi [questo commento] (https://stackoverflow.com/questions/27368423/how-can-i-get-a-ril-serial-number-for-motorola-moto-x#comment43189061_27368423) per perché è che hapenning. È piuttosto sfortunato, ma per tutti i metodi per ottenere un identificatore di dispositivo univoco dovresti anche avere un "piano di backup", ad esempio magari gettare qualche file/stringa su una funzione di hash o qualcosa di simile. Se utilizzi [Kivy] (http://kivy.org/), puoi accedere all'API di Android direttamente con [pyjnius] (https://github.com/kivy/pyjnius/) (richiede JNI). – KeyWeeUsr
Non sto usando kivy.tuttavia ho python per funzionare con tutti i suoi moduli predefiniti, come uuid, os, sys, subprocess, ecc., qualsiasi altro modulo non è disponibile per la compilation cross esistente che sto usando. – Gahan