加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux:在系统上设置hostid?

发布时间:2020-12-13 17:58:37 所属栏目:Linux 来源:网络整理
导读:我有一个许可证服务器.硬件失败了. 许可证软件取决于/usr/bin/hostid返回的系统的“hostid”. hostid是唯一的“当前主机的数字标识符”. 如果我将软件迁移到另一台主机,似乎’hostid’将更改,许可软件将失败.请注意,此系统的主机名和IP地址将保持不变. 两个
我有一个许可证服务器.硬件失败了.

许可证软件取决于/usr/bin/hostid返回的系统的“hostid”. hostid是唯一的“当前主机的数字标识符”.

如果我将软件迁移到另一台主机,似乎’hostid’将更改,许可软件将失败.请注意,此系统的主机名和IP地址将保持不变.

两个问题:

> hostid是如何确定的?它是随机的,是否取决于主机名或MAC地址等?
>我可以在新系统上设置hostid,使其与旧系统的hostid匹配吗?

解决方法

假设你所指的是传统的unix hostid.如果我想将软件绑定到一个系统,我会使用加密狗或一些更强大的方法来识别一个看起来像hostid的系统是非常随意的,但是..

使用库调用“gethostid”检索hostid.它只是一个通用值,如果未设置将基于主机系统的ipv4地址.

见“man 2 gethostid”

In the glibc implementation,if gethostid() cannot open the file containing the host ID,then it obtains the hostname using gethostname(2),passes that hostname to gethostbyname_r(3) in order to obtain the host’s
IPv4 address,and returns a value obtained by bit-twiddling the IPv4 address. (This value may not be unique.)

您可以将文件/ etc / hostid放在您想要的值的位置(可能与您捐赠盒子上’hostid’程序的内容相同),将其自己设置为您想要的任何内容.

设置它虽然有点小问题..文件需要hostid的压缩二进制表示.

我使用python但你可以做任何事情……(很确定有人知道打印压缩字节更简单的方法).

from struct import pack
f = open('/etc/hostid','w')
f.write(pack('i',12345))
f.close()

这将以一种方式设置hostid,gethostid将返回与捐赠框相同的值作为迁移框.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读