golang中如何获取当前主机的唯一标识符?

LEo*_*LEo 2 uniqueidentifier go

我想获取当前主机的唯一标识符,该标识符用作 golang 中的许可证名称。怎么做 ?例如,像 C\xef\xbc\x9a

\n\n
gethostid() //can get the host id\n
Run Code Online (Sandbox Code Playgroud)\n

Den*_*eck 5

您可能需要machine-id

http://man7.org/linux/man-pages/man5/machine-id.5.html说:

机器 ID 通常是在系统安装期间从随机源生成的,并且在所有后续引导中保持不变。或者,对于无状态系统,如果发现它是空的,则在早期启动的运行时期间生成它。

机器 ID 不会因本地或网络配置或硬件更换而改变。由于这一点及其更长的长度,它是 POSIX 指定的 gethostid(3) 调用的更有用的替代品。

您可以machine-id通过以下方式获取(最新的)Linux 系统:

cat /etc/machine-id
# or
cat /var/lib/dbus/machine-id
Run Code Online (Sandbox Code Playgroud)

大多数主要操作系统都有唯一的主机标识符。不过,可能存在不唯一的主机 ID(由映像/克隆/备份恢复引起)。

您还可以查看我的 golang 包machineid了解实现细节,它适用于 BSD、Linux、OS X 和 Windows,并且不需要管理员权限。