dsh – distributed shell

DSH is Distributed Shell. It allows you to run shell commands on multiple servers at once and gather see their output in local terminal.


Install  On Debian/Ubuntu

apt-get install dsh


brew install dsh


You can use default config but we always add following to dsh config file:

Global config => /etc/dsh.conf

Local config =>  ~/.dsh/dsh.conf

remoteshell = ssh
showmachinenames = 1

Hostname List


Global list => /etc/dsh/machines.list

Local list =>  ~/.dsh/dsh/machines.list

Add hostnames, one on each line.

Please note that, you need to add SSH key’s separately (beforehand).



We need to pass actual command to dsh command with optional prameters:

Lets check uptime

 dsh -a uptime

You will see output as below

example.com: 18:07:18 up 294 days,  6:38,  3 users,  load average: 0.17, 0.26, 0.24
example.net: 18:09:47 up 9 days, 19:54,  1 user,  load average: 0.26, 0.2

-a denotes run for all hosts.

We can also pass -c which will create concurrent connections to all servers.

Grouping Hosts/Servers

You can make group and run dsh command on that group servers only.

You can add a file under group directory like below

Global settings => /etc/dsh/group/hello

Local settings =>  ~/.dsh/dsh/group/hello

Add list of hostnames. You can add multiple hostnames to groups


Lets check uptime on hello group servers:

dsh -g hello uptime

Will display something like

hello.com: 18:11:45 up 9 days, 19:56,  0 users,  load average: 0.05, 0.18, 0.22
hello.net: 18:11:45 up 19 days, 19:56,  0 users,  load average: 0.15, 0.18, 0.22
hello.org: 18:11:45 up 119 days, 19:56,  0 users,  load average: 0.15, 1.8, 0.22

Web-Based Alternative

If you are looking for web-based service which does things like this, you may try https://commando.io/.  It has some really nice features and a free plan for 2 users.