I have heard that pssh
and clusterssh
are two popular ones, but I thought I would open it to discussion here and see what the community's experiences with these tools were? What are the gotchas? Any decent hacks or use cases?
- 11,332
- 8
- 36
- 48
- 1,904
- 1
- 16
- 20
-
1similar question http://serverfault.com/questions/2533/linux-running-the-same-command-on-many-machines-at-once – hayalci Jun 10 '09 at 16:03
-
Duplicate of https://serverfault.com/questions/2533/linux-running-the-same-command-on-many-machines-at-once – rogerdpack Dec 20 '17 at 16:13
8 Answers
I have used pssh and it's easy and works quite well. It's really great for quick queries.
If you find yourself managing servers I'd suggest something more robust and in a slightly different realm (configuration management) such as Puppet or CFEngine.
- 976
- 1
- 8
- 13
-
2I should also add- depending on what you're doing there could be many gotchyas using tools like pssh and clusterssh. eg- editing or deleting files. very easy to make a mistake. As a general rule of thumb I only use pssh for status queries. For anything more complex I use puppet because it lets me test out changes in my testing environment before sending it out to production servers. – user7321 Jun 02 '09 at 17:28
-
Sounds like a good best practice. That was exactly what I was looking for thanks! – faultyserver Jun 02 '09 at 17:37
-
1For something that offers the best of both worlds you may want to take a look at salt (http://www.saltstack.org) it can do full on configuration management but will also allow you to issue a command to multiple computers at once. – kaptk2 Jan 04 '12 at 02:25
-
There's also pdssh apparently similar to pssh (https://sourceforge.net/projects/pdsh/) , and don't forget the linux "parallel" command :) – rogerdpack Oct 01 '15 at 18:19
Its important to know what you want to do. If you want to run 'apt-get update' on lots of servers, clusterssh is reportedly an easy-to use and effective tool. See Kyle Rankin's article on clusterssh at the Linux Journal.
If your work on different servers will require logic loops, putting, getting or otherwise interacting with each host (or possibly having to interact with a host because of an error condition) a tool such as Fabric (which has just hit its 1.0 release) is invaluable. You'll probably enjoy most using Fabric if you are a pythonista.
In either case one is probably expecting to do fairly simple tasks on the remote servers affected, and dropping in specially on any problem hosts. However Fabric provides more options for dealing with variation.
One thing that is generally not handled well is dealing with multiple hosts behind a gateway host, requiring one to connect first to the gateway and then port forwarding from there. As ssh itself does this quite simply, and one can set one's .ssh/config
file to something like
Host gateway
Port 9000
User remoteadmin
HostName datacentre1.com
# mail
LocalForward 9100 192.168.9.11:22
# phones
LocalForward 9101 192.168.9.12:22
Host dc1mail
Port 9100
Host 127.0.0.1
User localadmin
Host dc1phones
Port 9201
Host 127.0.0.1
User localadmin
In order to do the equivalent of ssh dc1mail 'cmd'
&& ssh dc1phones 'cmd'
one has to first bring up ssh gateway
. It would be nice if tools like clusterssh and Fabric would permit this to be done as part of their tools. Naturally, you can do this yourself by hand.
- 848
- 1
- 6
- 10
The SSH Power Tool (sshpt) was designed for parallel SSH without requiring that the user setup pre-shared SSH keys. It is superior to pssh and clusterssh in that it supports executions via sudo and can also copy files and execute them afterwards (optionally, via sudo as well). By default it outputs results in CSV format but sshpt.py doubles as an importable Python module so you can use it in your own programs (I used to use it as a back-end behind a a custom-built web-based reporting tool at my former employer).
- 197
- 1
- 1
Mussh is a good alternative, it is already included in many Linux distros.
Mussh is a shell script that allows you to execute a command or script over ssh on multiple hosts with one command. When possible mussh will use ssh-agent and RSA/DSA keys to minimize the need to enter your password more than once.
- 5,402
- 27
- 28
I use cssh and it works like a charm. You can edit the same file on several servers easily and then check only one window and change for instance value of particular variable. Repeat that for every window, hit :wq in vim and voila! Work is done ;)
It is also excellent tool for making aptitude upgrade.
Konsole in KDE and Terminal.app on OS X also have the capability of turning one console or tab into a "controlling" terminal that send input to multiple tabs/windows/sessions.
In the past, I have used pconsole for this.
- 7,511
- 2
- 33
- 42
My favorite parallel SSH tool is PuSSH ... IMO the syntax is more intuitive than any other similar packages available, and it doesn't actually need installation as an RPM, compilation or anything else. It just downloads as a couple of scripts, and just works.
- 13,019
- 4
- 35
- 45
- 21
- 1