hostid 到底是什么?它等同于 Hwaddr / MAC 地址吗?还是从 Hwaddr 地址派生的唯一标识符?
我正在尝试激活 Maple 数学软件,但它给我一个错误,指出该软件无法确定主机 ID。我已按照 Maplesoft 以下帮助页面中列出的所有说明进行操作,但到目前为止还没有成功。
http://www.maplesoft.com/support/faqs/detail.aspx?sid=32610
当我在终端中输入 hostid 时,它输出“007f0101”,这可能是不正确的。我读到 hostid 应该为每台类 unix 机器生成一个唯一标识符,但我在两个不同的 Ubuntu 12.04 安装上尝试了 hostid,它们都返回相同的“007f0101”序列。除非我误解了 hostid 是什么,否则我认为有些不对劲。
哦,这个 Ubuntu 安装是用 WUBI 安装程序完成的,所以从技术上讲,它位于虚拟磁盘上,而虚拟磁盘驻留在 Windows 分区中,据我所知。我觉得这可能是一个问题,但这并不能改变 hostid 在两台不同的计算机上相同的事实,其中一台是标准安装。
有谁知道与 hostid 有关的问题可能是什么吗?
谢谢!
答案1
hostid
是您的十六进制 IP 地址(经过字节交换)。
例如:
01234567 -> 23.01.67.45
或者就你的情况而言:
007f0101 -> 7f.00.01.01 = 127.0.1.1
在 中找到。如果您的机器是使用分配的地址/etc/hosts
安装的,这是正常的。DHCP
一个快速破解方法是使用 vi/etc/hosts
并输入您的 IP 地址而不是 127.0.1.1。但这是一种破解方法...如果您的 IP 地址在下次启动时发生变化,您的 hostid 将不再与您的 IP 匹配。
底线是 hostid 很糟糕。
更新:
我用 perl/shell 编写了自己的 hostid 脚本,并首先将其放在路径中:
#!/usr/bin/perl -w
printf("%02x%02x%02x%02x\n",(split /\./,`ip addr list|grep " inet "|grep -v " 127.0"|head -1|cut -f1 -d/|rev|cut -f1 -d" "|rev`)[1,0,3,2]);
值得注意的是,如果没有其他接口,它不会回退到使用环回。
答案2
我有三台物理机器,三台都是 12.04(2 台台式机,1 台服务器),三台都是 AMD64,三台都有相同的主机 ID“007f0101”。
glibc 的 gethostid 实现(参见 man gethostid)中似乎将 hostid 存储在文件 /etc/hostid 中,默认情况下该文件在 12.04 中不存在。如果该文件不存在,则使用 localhost ipv4 地址生成 hostid。如果使用 DHCP,则在 hosts 文件中,localhost 在所有计算机上都映射到 127.0.0.1,从而导致 hostid 不唯一。
您可以创建包含随机内容的 /etc/hostid 文件来获取唯一的主机 ID。