2014-10-27 17 views
8

Master'ın script konsolunu kullanarak master'a bağlı olan tüm UNIX slave 'da aynı kabuk komutunu (ls gibi çok basit kabuk komutları) çalıştırmak istiyorum.Masters'ın script konsolu aracılığıyla tüm Jenkins slave'lerine uzaktan kumanda komutu çalıştırın

Bunu groovy kullanarak nasıl yapabilirim?

Şunun gibi bir şey yapmak istersiniz: Display Information About Nodes ancak bilgi görüntülemek yerine, her köle üzerinde basit UNIX komutlarını çalıştırmak ve sonuçları yazdırmak istiyorum.

+0

http://jenkins-ci.361315.n4.nabble.com/Execute-a-command-on-all-nodes-master-slaves-td4024223.html – Jayan

+0

Bunu neden ihtiyacım var? Kukla ve tuz gibi bir orkestrasyon rolü gibi görünüyor. – nerdioculos

+0

Aslında asıl nedenim, bu sistemin sistem betiği ile mümkün olup olmadığını görmek. Bu şekilde yapılabileceğinden neredeyse eminim (bir yanlış kullanım olabilir). – coffeMug

cevap

14
import hudson.util.RemotingDiagnostics; 

print_ip = 'println InetAddress.localHost.hostAddress'; 
print_hostname = 'println InetAddress.localHost.canonicalHostName'; 

// here it is - the shell command, uname as example 
uname = 'def proc = "uname -a".execute(); proc.waitFor(); println proc.in.text'; 

for (slave in hudson.model.Hudson.instance.slaves) { 
    println slave.name; 
    println RemotingDiagnostics.executeGroovy(print_ip, slave.getChannel()); 
    println RemotingDiagnostics.executeGroovy(print_hostname, slave.getChannel()); 
    println RemotingDiagnostics.executeGroovy(uname, slave.getChannel()); 
} 
+0

Bunu denedim ve bazı komutlar için çalışıyor, ancak içinde * bulunan herhangi bir komut yürütülüyor gibi görünmüyor. Bunun hakkında bir fikrin var mı? Kaçmayı denedim ama bu bir hata yaptı. – timmyonline

İlgili konular