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

如何获取golang中当前主机的唯一标识符?,go,uniqueidentifier,Go,Uniqueidentifier,我想获取当前主机的唯一标识符,该主机用作golang中的许可证名称。怎么做?例如,像C: gethostid() //can get the host id gethostid(3)是一个特定于UNIX/BSD的libc函数。从/etc/hostid读取数据在非UNIX系统上不起作用,并且与平台无关 既然go不提供gethostid()之类的东西,为什么不像JAVA这样的其他平台无关语言一样实现它呢 您可能需要机器id 说: 机器ID通常是在运行期间从随机源生成的 系统安装和所有后续引导保持不

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

gethostid() //can get the host id
gethostid(3)是一个特定于UNIX/BSD的libc函数。从/etc/hostid读取数据在非UNIX系统上不起作用,并且与平台无关

既然go不提供gethostid()之类的东西,为什么不像JAVA这样的其他平台无关语言一样实现它呢

您可能需要机器id

说:

机器ID通常是在运行期间从随机源生成的 系统安装和所有后续引导保持不变。 (可选)对于无状态系统,它是在运行时在 如果发现为空,则提前引导

机器ID不会因本地或网络而更改 配置或更换硬件时。由于这个和它的 长度越长,它对gethostid(3)的替换就越有用 调用POSIX指定的函数

您可以在(最近的)Linux系统上通过以下方式获得
机器id

cat /etc/machine-id
# or
cat /var/lib/dbus/machine-id
大多数主要的操作系统都有一个唯一的主机标识符。但是,可能存在非唯一的主机ID(由映像/克隆/备份还原引起)


您还可以查看my golang软件包以了解实现详细信息,该软件包在BSD、Linux、OS X和Windows上运行,不需要管理员权限。

gethostid(3)只需读取/etc/hostid(如果不可用,则执行一些复杂操作)。你自己读一下/etc/hostid。你自己找到解决方案了吗?我正在尝试实现同样的事情,但目前为止运气不佳。我使用ip地址来转换hostid,例如:`ip:192.168.3.120->hostid:a8c07803`可能与