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 =>
Local config =>
remoteshell = ssh showmachinenames = 1
Global list =>
Local 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.
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 =>
Local settings =>
Add list of hostnames. You can add multiple hostnames to groups
hello.com hello.net hello.org
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
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.