我需要为监控目的注册在真实硬件以及虚拟机、AWS、Azure 上运行的 Linux 服务器,方法是发送它们的唯一 ID。我发现了由
sudo dmidecode | grep UUID
是最好的选择,因为即使您克隆了虚拟机而没有重新初始化 MAC 地址,它的结果也会有所不同。
但是dmidecode并不是到处都安装的。所以我想了解文件/sys/devices/virtual/dmi/id/product_uuid是否 总是包含与dmidecode相同的 UUID ?
我需要为监控目的注册在真实硬件以及虚拟机、AWS、Azure 上运行的 Linux 服务器,方法是发送它们的唯一 ID。我发现了由
sudo dmidecode | grep UUID
是最好的选择,因为即使您克隆了虚拟机而没有重新初始化 MAC 地址,它的结果也会有所不同。
但是dmidecode并不是到处都安装的。所以我想了解文件/sys/devices/virtual/dmi/id/product_uuid是否 总是包含与dmidecode相同的 UUID ?
dmidecode | grep UUID
并且/sys/devices/virtual/dmi/id/product_uuid
应该相等,但根据您的系统,输出可能会有所不同。
从 dmidecode源代码:
/*
* As of version 2.6 of the SMBIOS specification, the first 3
* fields of the UUID are supposed to be encoded on little-endian.
* The specification says that this is the defacto standard,
* however I've seen systems following RFC 4122 instead and use
* network byte order, so I am reluctant to apply the byte-swapping
* for older versions.
*/
另请参阅:[PATCH] dmi,对 sysfs 产品 UUID 使用 little-endian
我注意到Ansible也首先尝试 /sys 并回退到 dmidecode 可执行文件以收集与 dmi 相关的事实。