Created
June 4, 2015 21:51
-
-
Save aasokan/b681193592797d44d562 to your computer and use it in GitHub Desktop.
Running commands on several remote hosts using ssh and xargs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Running commands on several remote hosts using ssh and xargs | |
There are a few different ways to run commands on groups or clusters of remote nodes, depending upon how complex the command. | |
Assuming your machines are named "node01" - "node22" : | |
# Run a command in parallel on all remote nodes | |
# results come back in random order as they are received. | |
pdsh -w "node[01-22]" df | |
# pdsh allows some more complex listings of hosts | |
pdsh -w "node04,node[06-09]" reboot | |
# Run a command sequentially on all remote nodes | |
# slow, but results come back in order | |
seq -w 1 22 | xargs -I '{}' ssh node'{}' df | |
# Run a command in parallel on all remote nodes without pdsh | |
seq -w 1 22 | xargs -P 22 -I '{}' ssh node'{}' df | |
# Run a command in parallel needing pipes on the remote host | |
# Otherwise, pipes are processed locally | |
seq -w 1 22 | xargs -P 22 -I '{}' ssh node'{}' \ | |
"ps afx > \`hostname\`.txt" | |
# Run a command in parallel needing root | |
# sudo requires a tty, hence we pop up xterm windows | |
seq -w 1 22 | xargs -P 22 -I '{}' xterm -e \ | |
"ssh -t node'{}' sudo gdm-restart" | |
# Run a command in parallel needing root and pipes on the remote host | |
seq -w 1 22 | xargs -P 22 -I '{}' xterm -e \ | |
"ssh -t node'{}' sudo bash -c \"echo 3 > /proc/sys/vm/drop_caches\"" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment