Windows 从节点通过“Java web start”连接到 Jenkins 服务器。节点的系统信息没有它的 IP 地址。
我必须遍历我们拥有的所有从节点,并找到哪台机器(IP 地址)对应于 Jenkins 中的从节点。
有没有办法从 Jenkins 本身找到从节点的 IP 地址?
Windows 从节点通过“Java web start”连接到 Jenkins 服务器。节点的系统信息没有它的 IP 地址。
我必须遍历我们拥有的所有从节点,并找到哪台机器(IP 地址)对应于 Jenkins 中的从节点。
有没有办法从 Jenkins 本身找到从节点的 IP 地址?
通过节点的脚本控制台(Manage Jenkins -> Nodes -> Select a node -> Script Console)我们可以执行groovy脚本。运行以下命令以获取 IP 地址。
println InetAddress.localHost.canonicalHostName
找出 IP的最有效且与平台无关的方法可能是 master 上的“全局”脚本控制台的以下常规代码:
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 地址。
由于这不需要特定于节点的控制台,因此很容易在覆盖所有节点的代码周围添加一个循环。
要在非 Windows 詹金斯奴隶上回答同样的问题:
获取 IP 地址:
println "ifconfig".execute().text
获取主机名:
println "hostname".execute().text
转到节点的Log
链接:
http://jenkins.mycompany.com:8080/computer/my_node_name/log
第一行应该是这样的:
JNLP agent connected from /10.11.12.123
要获取 Windows 从站上的 ip:
导航到脚本控制台(管理 Jenkins ->节点->选择一个节点->脚本控制台)
println "ipconfig".execute().text
在你的 Jenkins 工作中,如果它在 groovy 中,或者回显 ifonfig sh "/sbin/ifconfig -a | grep inet"
也可以通过 Jenkins UI 找到:Manage Jenkins --> Manage Nodes --> 点击 Node name --> Configure
这应该显示该节点的公共和私有 IP 地址