我想知道是否有办法生成特定机器的唯一硬件哈希?哈希应该是机器独有的,即使两台机器的配置相同,哈希也应该不同。这可能吗?
答案1
您可以使用 MAC 地址eth0
(假设每台机器上都有)。您可以使用以下方式单独获取该地址(可能有更简单的方法):
ifconfig eth0 | grep HWaddr | awk '{ print $NF}' | sed 's/://g'
这将给你类似的内容6cf04954aaaa
。
这些都是应该它们是独一无二的,但并不总是如此。如果您的所有网络硬件都来自同一制造商,您可能会发现一些交叉,因此请小心处理。
如果失败的话,您可以生成自己的唯一字符串并将其存储在/etc/computer-id
(或您选择的其他路径)中。
uuidgen -r
将生成尽可能随机的东西例如:52a85807-35fe-409e-8983-87eb58c02ece
uuidgen -t
使用时间和eth0
的MAC来制作类似的东西:eb8280dc-b5ec-11e0-90dd-6cf04954aaaa
两者都相当独特,但与任何随机事物一样,总是存在发生冲突的可能性。保留一个中心列表以避免此类问题。
答案2
我能想到的最简单的解决方案是:
sudo dmidecode -s system-uuid
根据手册页dmidecode
,该数据是从与 BIOS 有关的桌面管理界面检索的。它无法更改。
我在两台具有相同硬件的机器上测试了此命令,结果与名称预期的不同system-uuid
,因此它实际上可以用作唯一的硬件哈希。