ClusterSSH is a nice tool for manipulating multiple *nix machines simultaneously. For example, if I want to run some commands on two Linux machines named server1 and server2, I could:
# cssh server1 server2
And I will get two xterm windows that I can control simultaneously by typing into the cssh command window. Since cssh will send keystrokes to both servers, any series of commands can be run, including editing files, etc. I have found that my daily patterns of behavior make cssh preferable to similar tools such as pdsh. Also, cssh uses very similar options syntax to the ssh command, so I don't have to remember different options (I frequently use -l and -p).
I might want to tail the logs on all of the machines in the cluster, but then focus in on one particular machine after I have identified a particular cluster node of interest. Similarly, I might work out a long command line on a single node before running it on the rest of the machines via the cssh command window.
In Debian and Ubuntu, cssh can be installed with:
# sudo apt-get install clusterssh
Cluster SSH is also available for Mac OS X (http://code.google.com/p/csshx/).
A clusterssh package seems to be working its way into Red Hat flavors via Extras or 3rd party repos such as rpmforge.
After running cssh for the first time, you will have a .csshrc file in your home directory. This file can be tweaked in various ways to make connecting to groups of machines easier. To save a group of machines into a list that you can re-use, cssh can use a plain text cluster file.
To use a cluster file: