Get a unique computer ID in Python on windows and linux
I'd like to get an id unique to a computer with Python on Windows and Linux. It could be the CPU ID, the motherboard serial, ... or anything else.
I looked at several modules (pycpuid, psi, ...) without luck.
Any idea on how to do that?
Solution 1:
There seems to be no direct "python" way of doing this. On modern PC hardware, there usually is an UUID stored in the BIOS - on Linux there is a command line utility dmidecode
that can read this; example from my desktop:
System Information
Manufacturer: Dell Inc.
Product Name: OptiPlex 755
Version: Not Specified
Serial Number: 5Y8YF3J
UUID: 44454C4C-5900-1038-8059-B5C04F46334A
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Not Specified
The problem with MAC addresses is that usually you can easily change them programmatically (at least if you run the OS in a VM)
On Windows, you can use this C API
Solution 2:
Funny! But uuid.getnode return the same value as dmidecode.exe.
subprocess.Popen('dmidecode.exe -s system-uuid'.split())
00000000-0000-0000-0000-001FD088565A
import uuid
uuid.UUID(int=uuid.getnode())
UUID('00000000-0000-0000-0000-001fd088565a')