从主节点脚本控制台运行,或从系统groovy脚本(也在主服务器上运行)运行,如何获取从节点的IP地址?
答案 0 :(得分:5)
我希望这个简单的脚本就足够了:
import java.net.*
for (slave in Jenkins.instance.slaves) {
host = slave.computer.hostName
addr = InetAddress.getAllByName(host)
println slave.name + ": " + addr.hostAddress
}
但至少在我的安装中,它并没有在具有多个网络接口的系统上提供我想要的结果。
您可以使用"在奴隶上运行命令"来自the answer to "How to execute system command on remote node"的技术在每个奴隶上运行/sbin/ifconfig
之类的东西。这肯定会给你详细信息,但我没有Groovy精明来编写输出解析器来提取IP。
答案 1 :(得分:2)
@Dave Bacher的回答将为您提供给定主机的所有IP。 假设您的从属服务器基于SSH,这将严格为您提供代理使用的IP:
def jenkins = jenkins.model.Jenkins.instance
for (node in jenkins.nodes) {
println "${node.nodeName}: node.toComputer().launcher.host"
}