以编程方式检测当前主机的最佳方法(通过硬件功能)

以编程方式检测当前主机的最佳方法(通过硬件功能)

我有一个安装了 Linux 的硬盘,我喜欢从不同的物理计算机启动。我的问题是是否可以以编程方式检测驱动器连接到哪台计算机。例如,我尝试过调用cat /proc/cpuinfo并通过管道将其输入sha256sum,希望为每个工作站创建唯一的硬件信息散列,但似乎 /proc 中的列表并不总是在每次重新启动后维护相同的信息,因为当我使用通过这种方法,我的哈希值不断变化。

有什么简单的方法可以做到这一点吗?

答案1

正如 Tom Hunt 在评论中建议的那样,使用其中一个网络接口的 MAC 地址。 MAC 地址是唯一的。 (这假设所有计算机都至少有一个网络接口,但这是一个合理的假设。)

请注意可能有多个接口。我建议您将它们全部视为同一台机器的有效标识符,以避免在各种情况下出现麻烦(如果以不同的顺序检测到接口,则可能会分配不同的名称;某些接口可能是可移动的(例如 USB 加密狗)或禁用(例如wifi终止开关))。

您可以使用此命令列出所有当前可用网络接口的 MAC 地址(无论它们是否正在使用):

ip addr show | awk '$1 == "link/ether" {print $2}'

相关内容