This post is very old and likely contains information that is no longer accurate and links which no longer work. Proceed with caution.

Occasionally I need to to the same task, or similar tasks, on a group of machines all at once. I don’t have the luxury of a fully automated environment like Puppet setup, so a great tool I’ve been using is called ClusterSSH

ClusterSSH (A.K.A. cssh) opens up a batch of xterm windows to a group of hosts you specify, and gives you a master control window with a command prompt. You can select and type into the host windows individually, but the real fun is with the command line in cssh’s main window: Any key you press while in the command line there is sent to every host window.

So whether you need to do a common task, like update the ports tree on FreeBSD, check drive space, etc, it can really speed things up. This weekend I’ve been using it to switch a batch of machines over from cvsup to subversion for /usr/ports and /usr/src on FreeBSD, and it’s worked great. In the past I’ve used it for things like updating ports, making sure a script worked when run identically on every machine, and for making sure that things like sudo were installed and functional across a set of systems. I’ve also used it to login to a group of pfSense machines to see if they could all ping and reach a tcp port on a certain remote host.

It’s worth checking out if you have any similar needs. If you’re on FreeBSD it’s in /usr/ports/security/clusterssh or for other operating systems you can grab it from http://sourceforge.net/projects/clusterssh/

Updated: