2013-02-18 184 views
35

通过“Java web start”连接到Jenkins服务器的Windows从属节点。节点的系统信息没有它的IP地址。查找Jenkins节点的IP

我不得不穿过我们所有的奴隶节点,并找到哪个机器(IP地址)对应于詹金斯的奴隶节点。

有没有办法从Jenkins本身找到一个从节点的IP地址?

回答

43

通过脚本控制台(管理詹金斯 - >节点 - >选择一个节点 - >脚本控制台)的节点,我们可以执行Groovy脚本。运行以下命令获取IP地址。

println InetAddress.localHost.canonicalHostName 
+22

为了得到实际的IP地址(最初的要求),我使用了脚本控制台,而是执行了'println InetAddress.localHost.hostAddress'。 – 2013-08-06 15:46:56

+0

这些都不适用于Linux ......或者至少不是我的Ubuntu VM节点。 – 2016-06-15 23:55:40

+1

对于单个节点(至少在运行Linux时)可以正常工作,但是**无法在_all_节点上使用该**进行概述,因为它需要单独选择每个节点的脚本控制台**。我的答案中有一个更通用的解决方案,您可以试试。 – 2016-09-29 05:27:32

9

要回答这个同样的问题在非Windows詹金斯奴:

获取IP地址:

println "ifconfig".execute().text 

获取主机名:

println "hostname".execute().text 
+0

优秀的除帖子。我花了一段时间才看完所有关于SO的问题的答案。 – Shadoninja 2016-06-13 20:47:19

0

在你詹金斯工作,如果它在常规或其他呼应ifonfig sh“/ sbin/ifconfig -a | grep inet”

11

高效独立于平台的方式找出IP可能是在主以下Groovy代码为“全局”脚本控制台

import hudson.model.Computer.ListPossibleNames 

def node = jenkins.model.Jenkins.instance.getNode("myslave") 
println node.computer.getChannel().call(new ListPossibleNames()) 

在控制台,这产生(例如)

Result 
[192.168.0.17] 

结果是一个字符串列表,因为在一台机器上可能有多个IP地址。

因为这不需要特定节点控制台,很容易添加周围覆盖所有节点代码回路。

+0

据我所见,这是唯一在主设备上运行的解决方案。对? – hagello 2017-02-06 12:10:33

+0

是的,这是正确的。 (更确切地说,脚本在主服务器上运行;它通过远程处理将IP列表委托给从节点)。 – 2017-02-06 13:32:52

0

要获得在Windows奴隶IP:

导航到脚本控制台(管理詹金斯 - >节点 - >选择一个节点 - >脚本控制台

println "ipconfig".execute().text