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

时间:2016-03-22 07:27:09

标签: go uniqueidentifier

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

gethostid() //can get the host id

2 个答案:

答案 0 :(得分:1)

gethostid(3)是一个特定于UNIX / BSD的libc函数。从/ etc / hostid读取不适用于非UNIX系统,并且不依赖于平台。

因为go没有像gethostid()那样提供像JAVA那样的其他平台无关语言实现它,在这里回答: How to get a unique computer identifier in Java (like disk id or motherboard id)

答案 1 :(得分:1)

您可能需要 machine-id

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

  

机器ID通常是在随机源中生成的     系统安装并保持所有后续靴子不变。     可选地,对于无状态系统,它在运行时期间生成     如果发现它是空的,则提前启动。

     

机器ID不会根据本地或网络进行更改     配置或更换硬件时。由于这个和它     更长,它是gethostid更有用的替代品(3)     调用POSIX指定的。

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

cat /etc/machine-id
# or
cat /var/lib/dbus/machine-id

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

您还可以查看我的golang软件包machineid以获取有关BSD,Linux,OS X和Windows的实施细节,并且不需要管理员权限。