# cat /sys/class/dmi/id/board_serial # cat /sys/class/dmi/id/product_uuid root@pecka:/home/bazil# for i in /sys/class/dmi/id/product_*; do echo -n "$i: "; cat $i; done (/sys/class/dmi/id/*) ROUT (/sys/class/net/*/address) ROUT - stable? (/sys/bus/usb/devices/*/serial) /var/lib/dbus/machine-id (/var/db/dbus/machine-id) /etc/machine-id parts from /proc/cpuinfo ALL - model name 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. hostid (command) (/etc/hostid) ROUT-empty blkid LINUX lsblk -nro SERIAL dmidecode lshw (https://www.baeldung.com/linux/machine-id) $ echo "$(fdisk --list)$(lshw -short)" | md5sum | cut --delimiter=' ' --fields=1 df / -> get disk path (e.g. /dev/sda1) -> /dev/disk/by-uuid je linka (e.g. na /dev/sda1) e.g.: for disk in /dev/disk/by-uuid/*; do basename "$(readlink "$disk")" basename "$disk" echo done e.g. disk=sda1 find /dev/disk/by-uuid -type l -exec sh -c "readlink {} | grep -o $disk && basename {}" \; --- in general mac address some sort of serial no combinations: md5sum, sha*sum --- /proc/sys/kernel/random/boot_id - generated one-time on boot (for detecting reboots) /proc/sys/kernel/hostname