Installing distributed shell (DSH) on Solaris, Linux and MacOSX

DSH is distributed shell. It allows you to run shell commands on multiple servers at once and gather the output in the local terminal


  • Solaris 10 and 11: The dsh package is downloadable for Solaris from the OpenSW website.
    # pkgadd -d
    # /opt/csw/bin/pkgutil -U
    # /opt/csw/bin/pkgutil -y -i dsh
  • Mac
    # brew install dsh
  • Debian/Ubuntu
    % sudo apt-get install dsh


Out of the box dsh used default config, but I suggest that you add the following to the config file

General Configuration
  • Global config: /etc/dsh.conf
  • Local config: ~/.dsh/dsh.conf
remoteshell = ssh
showmachinenames = 1
Hostname List


  • Glocal list: /etc/dsh/machines.list
  • Local list: ~/.dsh/machines.list

Add each hostname or IP address on a seperate line

NOTE: You may need to add SSH key's


DSH usage

To use dsh, simple pass the actual command yo wish to run. For example:

% dsh -a -c uptime

where -a denotes run for all hosts. You can also pass -c which will create concurrent connections to all servers

Grouping Hosts

You can make a group of servers and run dsh commands on that group of servers only.. To group servers together create a group file under the group directory

  • Global settings: /etc/dsh/group/myservers
  • Local settings: ~/.dsh/group/myservers

Add list of hostnames, one per line.

Example 1:

cat /etc/dsh/group/myservers

Example 2:

cat ~/.dsh/group/myservers

To run against a group, simple use the -g switch and group name. For example:

# dsg -g myservers -c uptime