# dmidecode --string system-uuid
我正在使用上面的代码获取我的环境中每个主机上的 UUID。据我了解,具有相同硬件配置的同一主机上的不同 Linux 发行版之间的 UUID 不应发生变化。但在不同的 Linux 发行版上进行一些测试后,我使用相同的命令遇到了不同的 uuid。
看来旧dmidecode
版本会得到不同的 UUID 结果。
例如,dmidecode 2.9
SLES11.2 结果为string A
,dmidecode 2.12
Debian 8 结果为string B
.
无论我在计算机上部署什么 Linux 发行版,如何才能获得相同的 uuid?
附加信息:
我想使用dmidecode
而不是 MAC 地址作为 UUID,因为我发现如果我更换网络适配器或其他一些硬件的设置,UUID 将不会改变。
我需要的是我的机器上可以有一些唯一的标识符,以便在较小的硬件更改和不同的操作系统中识别它。我想在某种程度上使用dmidecode
不能是假的,而不是仅仅生成 UUID 并将其写入文件并使用它。
我正在使用VMware,并且经常使用机器克隆,这就是为什么我需要一些不会通过克隆复制的东西。
答案1
它是sw,无论你想要与否,它都会改变:)
我不会依赖它(并且几乎依赖任何基于软件或硬件的自动检测信息)来获取数据库索引 - 硬件和软件都可能需要更改,如果信息发生变化,您必须重新开始。可能更糟 - 如果你能得到重复的数据,你的数据库就会遇到麻烦。
我会使用索引的资产管理工具 - 以保证其唯一性 - 并且我会将自动检测到的信息(MAC、HDD、RAM、CPU、uuid 等)映射到索引,但作为单独/独立的值,没有分解成单个值。这样,您可以通过单值/多值查询(在大多数情况下)来定位机器,并根据需要回退到索引/资产管理系统。您还可以处理硬件/软件升级/交换,添加/更改/删除一个或多个信息值(例如更新的 uuid)。
答案2
我用hostname
:
i = gethostname(tmp,2047);
if (i) /* found host name */
strcpy(wrk,tmp);
如果变化不大:-) 就很好了。