Issue
I want to run same shell command (very simple shell commands like ls
) on all the UNIX slaves
which are connected to the master by using the master's script console.
How can I do this using groovy?
Want to do something like this: href="https://wiki.jenkins-ci.org/display/JENKINS/Display+Information+About+Nodes">Display Information About Nodes but instead of displaying information, I want to also run some simple UNIX commands on each slave and print the results.
Solution
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());
}
Answered By - Ivan Klass
Answer Checked By - David Marino (JavaFixing Volunteer)