一尘不染

为什么InetAddress.getLocalHost()。getHostName()返回不同于bash“主机名”的值?

jenkins

我有一个build.gradle任务,它像我的dev框上的冠军一样工作,生成了一个属性文件,该文件记录了生成生成的机器的名称。逻辑很简单…

def hostname = InetAddress.getLocalHost().getHostName();

在我的开发箱中,这总是产生与bash shell中的主机名相同的值。

bobk-mbp:DM_Server bobk$ hostname
bobk-mbp.local

但是,在我们的jenkins
CI服务器上,bash主机名返回一件事,但是我对InetAddress.getLocalHost()。getHostName()的调用;返回其他内容。在jenkins机器上需要进行哪些更改才能使这两个返回相同的值?


阅读 1474

收藏
2020-07-25

共1个答案

一尘不染

假设您使用的是Linux,则从o / s执行的hostname命令将返回内核的已配置主机名。

InetAddress.getHostName()使用操作系统中配置的命名服务(DNS)对服务器的IP地址进行反向查找。

如果需要操作系统所理解的主机名,那么通过System.getenv从环境变量获取主机名可能是最简单的选择。这不是一种完全健壮的方法,但是无需深入研究网络或系统管理员就可以了。

2020-07-25