linux下修改hostid

本文介绍了在Linux系统中修改主机标识(HostID)的方法,包括通过C语言和Python脚本实现的方式,以及直接手动修改配置文件的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux下修改hostid

网上有很多版本,总结了这几点。
1> 一个以16进制显示的int字符串;
2> 配置文件: /etc/hostid; 如果有值,输出, 结束。
3> 从hostname相对应ip的值经过某一算法,输出, 结束。
3.1 其中一个算法流传很多: ip地址转换成hex,然后将位置2143位置颠倒
4>如果没有配置相对应的hostname相对应的IP, 输出00000000, 结束;
     
网上有几个列子:
例子1. c语言版:
  1. #include <unistd.h>
  2.  int main(void){
  3.  sethostid(0x12345678); /* 将hostid设为12345678(16进制) */
  4.  return 1;
  5. }
经测试,第一次设置起到作用,并且/etc/hostid的值发生相对应的变化。以后的设置不起作用,/etc/hostid的值没有变。估计里面做了判断。

例子2. python直接修改根据hostname相对应的ip修改/etc/hostid 文件:
  1. #!/usr/bin/python
  2. from struct import pack
  3. a = '10.0.0.130'
  4. l =a.split('.')
  5. id = hex(int(l[1]))[2:]+'-'+hex(int(l[0]))[2:]+'-'+hex(int(l[3]))[2:]+'-'+hex(int(l[2]))[2:]
  6. id = '0x'+id
  7. hostid = pack("I",int(id,16))
  8. filename = "/etc/hostid"
  9. open(filename,"wb").write(hostid)
这个例子不适合我,我的hostname没有和ip关联,/etc/hosts以及/etc/hostname中都没有配置,同时不符合我的情况, 就没有测试。不过目测它是能起到作用的, 因为修改了配置文件。

例子3: 直接修改为某个hostid: aa0a1209。 一条命令:
  1. echo -ne '\x09\x12\x0a\xaa' > /etc/hostid
我的系统是小字节排序,知道原理,就直接倒序写了,c, python 闪一边去吧。



参考:  
sethostid 函数: http://manpages.ubuntu.com/manpages/jaunty/man2/sethostid.2.html
python设置的例子: http://tdis.me/2013/02/fedora-18-linux-hostid-and-nuke/
c设置的例子: http://heweist.blog.163.com/blog/static/346429092010023111742342/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值