2013-02-18 15 views
35

Podrzędny węzeł systemu Windows podłączony do serwera Jenkins za pośrednictwem "Java web start". Informacje o systemie węzła nie mają jego adresu IP.Wyszukiwanie adresu IP węzła Jenkinsa

Musiałem przejść przez wszystkie węzły slave, które mieliśmy, i znaleźć, która maszyna (adres IP) odpowiada węzłowi podrzędnemu w Jenkins.

Czy istnieje sposób na znalezienie adresu IP węzła podrzędnego z samego Jenkins?

Odpowiedz

43

poprzez konsolę Script (Manage Jenkins ->węzłów ->Wybierz węzeł ->Script Konsola) węzła możemy wykonać groovy skrypt. Uruchom następujące polecenie, aby uzyskać adres IP.

println InetAddress.localHost.canonicalHostName 
+22

Aby uzyskać aktualny adres IP (zgodnie z pierwotnym żądaniem) skorzystałem z konsoli skryptów, ale zamiast tego wykonałem polecenie "println InetAddress.localHost.hostAddress". –

+0

Żadne z tych zadań nie działa dla systemu Linux ... a przynajmniej nie dla mojego węzła maszyny wirtualnej Ubuntu. –

+1

Działa to dobrze dla pojedynczego węzła (przynajmniej jeśli działa pod Linuksem), ale ** nie można uzyskać przeglądu _all_ węzłów z tym **, ponieważ ** wymaga indywidualnego wyboru konsoli skryptów każdego węzła **.W mojej odpowiedzi jest bardziej ogólne rozwiązanie, możesz spróbować. –

9

Aby odpowiedzieć na to samo pytanie na innych niż Windows Jenkins slave:

uzyskać adres IP:

println "ifconfig".execute().text 

uzyskać hostname:

println "hostname".execute().text 
+0

Doskonały dodatek do posta. Zajęło mi trochę czasu, aby przejrzeć WSZYSTKIE odpowiedzi na pytanie dotyczące SO. – Shadoninja

0

W swojej Jenkins zadaje, jeśli działa w trybie "echo" lub "echo" ifonfig sh "/ sbin/ifconfig -a | grep inet"

11

Najbardziej wydajny i niezależny od platformy sposobem sprawdzenia IP jest prawdopodobnie następujący kodu groovy dla „globalnej” Script konsoli na wzorcu:

import hudson.model.Computer.ListPossibleNames 

def node = jenkins.model.Jenkins.instance.getNode("myslave") 
println node.computer.getChannel().call(new ListPossibleNames()) 

W konsola ta daje (na przykład)

Result 
[192.168.0.17] 

Wynikiem jest lista ciągów , ponieważ istnieje potencjalnie wiele adresów IP na jednym komputerze.

Ponieważ nie wymaga węzłów specyficzne konsole, łatwo jest dodać pętlę wokół kodu, który obejmuje wszystko węzły.

+0

O ile widzę, jest to jedyne rozwiązanie działające na serwerze głównym. Dobrze? – hagello

+0

Tak, zgadza się. (Mówiąc dokładniej, skrypt działa na systemie głównym, przekazuje listę adresów IP do węzła podrzędnego poprzez zdalne uruchamianie). –

0

Aby uzyskać IP na niewolnika Windows:

przejdź do konsoli Script (Manage Jenkins ->Węzły ->Wybierz węzeł ->Script Konsola)

println "ipconfig".execute().text