DSH – Run A Linux Command On Multiple Hosts At A Time
A while ago, we have written a guide that described how to run a single command on multiple remote systems at once using PSSH in Unix-like systems. Today, we are going to discuss about a similar tool called DSH. It stands for Distributed shell (or dancer’s shell). Using DSH, we can run a linux command on multiple hosts at a time. It is free and open source utility written using C programming language.nstall DSH
On Arch Linux and derivatives:
DSH is available in AUR, so you can install it using AUR helpers such as Yaourt or Packer as shown below.
Or,
On Debian, Ubuntu:
DSH is available in the official repositories of Debian, Ubuntu and other DEB based systems such as Linux Mint, Elementary OS. To install it DSH in any DEB based system, run:
For other Linux distributions, DSH can be manually compiled and installed as described below.
DSH requires libdshconfig in order to work. You can download the latest version of libdshconfig and dsh from this link.
Once downloaded, go to the directory where you have downloaded both both packages.
First compile and install libdshconfig using commands:
Then, compile and install dsh as well.
Configure DSH
We have installed dsh. Let us now configure DSH to execute commands over multiple hosts. To do so, first edit DSH configuration file and set the remote shell value from rsh to ssh.
On Arch Linux and derivatives, the default configuration file is /etc/kgname/dsh.conf.
Edit this file:
Change remoteshell value from rsh to ssh.
On DEB based systems:
On RPM based systems:
Next, we need to add the remote hosts where we want to execute the commands.
To do so, create/edit the machines.list file and add the remote hosts.
On Arch Linux and derivatives:
Add the remote host’s IP or Hostname one by one as shown below.
On DEB based systems:
On RPM based systems:
You can add any number of remote hosts in the machines.list file.
Usage
Once you have added all remote hosts and created a common user on all your remote systems, you can execute the Linux command on all remote hosts at once. Say for example, the following command will execute the uname -r command on all remote hosts at once.
It will ask you to enter the username and password of the respective remote host. If you don’t want to enter the user credentials each time you run this command, just configure password-less SSH login.
Sample output:
As you see in the above output, dsh utility displays the Kernel version of my two remote hosts.
For more details, refer the man page.
And, that’s all for now folks. Hope this helps. If you find our guides useful, please take a moment to share them on your social and professional networks. We will be posting more useful guides in the days to come. Keep visiting!
Cheers!
Resource: