在架构中获取唯一机器 ID 的最佳实践方法是GNU/Linux
什么?i386
mac
除了地址还有什么好的方法吗?
根据您的内核,DMI 信息可以通过 sysfs 获得。试试那些:
# cat /sys/class/dmi/id/board_serial
xxxxxxxxxxxxxxx
# cat /sys/class/dmi/id/product_uuid
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
或使用工具
# dmidecode -s baseboard-serial-number
...
# dmidecode -s system-uuid
...
在具有 systemd 的现代机器上:机器 ID 由systemd-machine-id-setup创建。机器 ID 的位置记录在案 - 在freedesktop machine-id和man machine-id中,并且机器 ID 具有更标准化的格式 -请参阅 RFC4122。只是:
cat /etc/machine-id
您可以使用 lshal。这需要先安装 hal(apt-get install hal 或 yum install hal)。这样您就可以在没有 root 权限的情况下访问 dmidecode 的所有信息。
非根等价物
# dmidecode | grep -i uuid
将会
$ lshal |grep -i system.hardware.uuid
同样根据您的需要提供其他信息。
计算您自己的 sysid 的一种简单且可移植的方法可能是在字符串中序列化 uname()、gethostid() 和一些 inode,例如 /home 或您的应用程序 homedir(通过 stat() 获得)等,然后对其进行哈希处理。