通过"Java web start"连接到Jenkins服务器的Windows从属节点.节点的系统信息没有IP地址.
我必须遍历我们拥有的所有从属节点,并找到哪个机器(IP地址)对应于Jenkins中的从属节点.
有没有办法从Jenkins本身找到从节点的IP地址?
dee*_*pak 60
通过脚本控制台(管理Jenkins - > 节点 - > 选择节点 - > 脚本控制台)的节点,我们可以执行groovy脚本.运行以下命令以获取IP地址.
println InetAddress.localHost.canonicalHostName
Run Code Online (Sandbox Code Playgroud)
Ale*_*x O 17
找到IP 的最有效和独立于平台的方法可能是主服务器上 "全局"脚本控制台的以下groovy代码:
import hudson.model.Computer.ListPossibleNames
def node = jenkins.model.Jenkins.instance.getNode( "myslave" )
println node.computer.getChannel().call(new ListPossibleNames())
Run Code Online (Sandbox Code Playgroud)
在控制台中,这会产生(例如)
Result
[192.168.0.17]
Run Code Online (Sandbox Code Playgroud)
结果是一个字符串列表,因为一台机器上可能有多个IP地址.
由于这不需要特定于节点的控制台,因此很容易在覆盖所有节点的代码周围添加循环.
Ada*_*nas 10
要在非Windows Jenkins奴隶上回答同样的问题:
获取IP地址:
println "ifconfig".execute().text
Run Code Online (Sandbox Code Playgroud)
获取主机名:
println "hostname".execute().text
Run Code Online (Sandbox Code Playgroud)
这与 deepak 解释的非常相似,但我在很短的步骤中添加了图像。
在 Jenkins UI 中点击:
管理 Jenkins -> 节点 -> 选择节点 -> 脚本控制台
然后运行 println InetAddress.localHost.canonicalHostName
转到节点的Log链接:
http://jenkins.mycompany.com:8080/computer/my_node_name/log
第一行应该说:
JNLP agent connected from /10.11.12.123
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55738 次 |
| 最近记录: |