2013-02-18 52 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