user663896
user663896

Reputation:

Best way to get machine id on Linux?

What is the best-practiced way to get an unique machine ID in GNU/Linux for i386 architecture?

Are there any good ways except the mac address?

Upvotes: 40

Views: 131825

Answers (4)

KamilCuk
KamilCuk

Reputation: 140970

On modern machines with systemd: machine id is created by systemd-machine-id-setup. The location of machine id is documented - in freedesktop machine-id and man machine-id and machine id has a more standardized format - see RFC4122. Just:

cat /etc/machine-id

Upvotes: 38

andrelsm
andrelsm

Reputation: 7

A simple and portable way of computing your own sysid may be to serialize uname(), gethostid() and some inodes like /home or your application homedir (obtained with stat()) etc. in a string and hash It.

Upvotes: -1

adnan kamili
adnan kamili

Reputation: 9455

You can use lshal. This needs hal (apt-get install hal or yum install hal) to be installed first. This way you can access all the info of dmidecode without root permissions.

A non-root equivalent of

# dmidecode | grep -i uuid

will be

$ lshal |grep -i system.hardware.uuid

And similarly other info as per your needs.

Upvotes: 5

c00kiemon5ter
c00kiemon5ter

Reputation: 17604

Depending on your kernel, the DMI information may be available via sysfs. Try those:

# cat /sys/class/dmi/id/board_serial
xxxxxxxxxxxxxxx
# cat /sys/class/dmi/id/product_uuid
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

or using a tool

# dmidecode -s baseboard-serial-number
...
# dmidecode -s system-uuid
...

Upvotes: 65

Related Questions