If you want to execute the same command on a few hosts, you can use a
forloop as shown below:
for host in host1 host2 host3 do ssh $host "hostname; who -b" doneThe example above iterates over a list of hosts, and runs two commands on each one to print the name of the host and the time it was rebooted. 2. While loop
If your list of hosts is stored in a file, you can use a
whileloop as shown below:
while IFS= read -r host do ssh -n $host "hostname; who -b" done < /tmp/myhostsYou must provide the
ssh, otherwise it will only run on the first host in your file and then the loop will terminate. 3. Parallel ssh
Parallel ssh (pssh) allows you to run a command on several hosts at the same time and is much faster than using a sequential loop if the number of hosts is large. You can specify how many parallel processes it uses to ssh to the various hosts (default is 32).
$ pssh Usage: pssh [OPTIONS] -h hosts.txt prog [arg0] .. -h --hosts hosts file (each line "host[:port] [user]") -l --user username (OPTIONAL) -p --par max number of parallel threads (OPTIONAL) -o --outdir output directory for stdout files (OPTIONAL) -t --timeout timeout in seconds to do ssh to a host (OPTIONAL) -v --verbose turn on warning and diagnostic messages (OPTIONAL) -O --options SSH options (OPTIONAL) $ pssh -h /tmp/myhosts -o /tmp/output "hostname; who -b"