2014-10-27 33 views
8

Tôi muốn chạy lệnh shell giống nhau (các lệnh shell rất đơn giản như ls) trên tất cả các nô lệ UNIX được kết nối với máy chủ bằng cách sử dụng bảng điều khiển tập lệnh của chủ.Chạy lệnh từ xa trên tất cả các lệnh Jenkins thông qua bảng điều khiển script của Masters

Tôi có thể làm điều này bằng cách sử dụng groovy như thế nào?

Muốn làm điều gì đó như thế này: Display Information About Nodes nhưng thay vì hiển thị thông tin, tôi cũng muốn chạy một số lệnh UNIX đơn giản trên mỗi nô lệ và in kết quả.

+0

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

+0

Tại sao bạn cần nó? Nó có vẻ giống như một vai trò dàn nhạc, như con rối và muối. – nerdioculos

+0

Thực ra, lý do chính của tôi là xem liệu điều này có thể thực hiện thông qua tập lệnh hệ thống groovy hay không. Tôi gần như chắc chắn điều này có thể được thực hiện theo cách này (mặc dù có thể là một sự lạm dụng). – coffeMug

Trả lời

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

Tôi đã thử điều này và nó hoạt động cho một số lệnh nhưng bất kỳ lệnh nào có * trong nó dường như không thực thi. Bất kỳ ý tưởng về điều đó? Tôi đã cố gắng trốn thoát nó nhưng chỉ có một lỗi. – timmyonline

Các vấn đề liên quan