如何通过某种调用将unix主机ID转换为Java?

http://linux.about.com/library/cmd/blcmdl1_hostid.htm

最佳答案

如果已通过先前对sethostid(long int id)的调用进行了设置,则它将驻留在HOSTIDFILE(通常为/etc/hostid)中。

如果不存在,则获取计算机的主机名。拔出主机名的地址,如果是IPv4,则它是IPv4地址,其格式从点分十进制转换为二进制,并交换前16位和后16位。

InetAddress addr = InetAddress.getLocalHost();
byte[] ipaddr = addr.getAddress();
if (ipaddr.length == 4) {
  int hostid = 0 | ipaddr[1] << 24 | ipaddr[0] << 16 | ipaddr[3] << 8 | ipaddr[2];
  StringBuilder sb = new StringBuilder();
  Formatter formatter = new Formatter(sb, Locale.US);
  formatter.format("%08x", hostid);
  System.out.println(sb.toString());
} else {
  throw new Exception("hostid for IPv6 addresses not implemented yet");
}

10-08 13:10