查找Jenkins节点的IP

dee*_*pak 50 jenkins

通过"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)

  • 为了获得实际的IP地址(最初请求)我使用了脚本控制台,但执行了`println InetAddress.localHost.hostAddress`. (31认同)
  • 这对于单个节点(至少在运行Linux的情况下)很好用,但是**您无法获得具有该节点的_all_节点的概述**,因为它**需要单独选择每个节点的脚本控制台**。我的答案中有一个更通用的解决方案,您可能需要尝试一下。 (2认同)
  • 这将始终打印主节点的名称/IP,而不是从节点 (2认同)

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地址.

由于这不需要特定节点的控制台,因此很容易在覆盖所有节点的代码周围添加循环.

  • 据我所知,这是在主服务器上运行的唯一解决方案。对? (2认同)

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)


gre*_*pit 7

这与 deepak 解释的非常相似,但我在很短的步骤中添加了图像。

在 Jenkins UI 中点击:

管理 Jenkins -> 节点 -> 选择节点 -> 脚本控制台

然后运行 ​​println InetAddress.localHost.canonicalHostName

在此处输入图片说明


Sri*_*bat 5

从Web界面

转到节点的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)

屏幕截图

屏幕截图