NAME
dsh - Distributed shell, or dancer’s shell
SYNOPSIS
dsh [-m machinename | -a | -g groupname] [-r remoteshellname] [-c | -w
| -i | -F forklimit ] -- commandline
DESCRIPTION
dsh executes command remotely on several different machines at the same
time. An utility to effectively do a for a in $(seq 1 10); do rsh $a
command; done in bourne shell.
OPTIONS
The options available are as follows.
--verbose | -v
Give verbose output of the execution process.
--quiet | -q
Makes output quieter.
--machine | -m [machinename[,machinename]*]
Adds machinename to the list of machines that the command is
exeuted. The syntax of machinename allows username@machinename
where remote shell is invoked with the option to make it of
username.
From version 0.21.4, it is possible to specify in the format of
username@machinename,username@machinename,username@machinename
so that multiple hosts can be specified with comma-delimited
values.
--all | -a
Add all machines found in /etc/dsh/machines.list to the list of
machines that the specified command is executed.
--group groupname | -g groupname
Add all machines found in /etc/dsh/group/groupname to the list
of machines that the specified command is executed.
If groupname is on the form @netgroup then the machines in the
given netgroup is used to specify the list of machines to
execute on.
--file machinefile | -f machinefile
Add all machines found in the specified file to the list of
machines that the specified command is executed.
The file should list one machine specification per line (with
the same syntax as the machinename argument). Lines starting
with "#" are ignored.
From version 0.21.4, Specifying the same machine several times
using any of the machine specification options will result in
multiple invocations merged into one.
--remoteshell shellname | -r shellname
Execute remote shell shellname as the remote shell. Usually any
of "rsh", "remsh" or "ssh" are available
--remoteshellopt rshoption | -o rshoption
Add one option rshoption to the list of options passed on to the
remote shell.
--help | -h
Output help message and exits.
--wait-shell | -w
Executes on each machine and waits for the execution finishing
before moving on to the next machine.
--concurrent-shell | -c
Executes shell concurrently.
--show-machine-names | -M
Prepends machine names on the standard output. Useful to be used
in conjunction with the --concurrent-shell option so that the
output is slightly more parsable.
--hide-machine-names | -H
Do not prepend machine names on the standard output.
--duplicate-input | -i
Duplicates the input to dsh process to individual process that
are remotely invoked. Needs to have --concurrent-shell set.
Due to limitations in current implementation, it is only useful
for running shell. Terminate the shell session with ctrl-D.
--bufsize | -b [buffer-size in bytes]
Sets the buffer size used in replicating input for
--duplicate-input option.
--version | -V
Outputs version information and exits.
--num-topology | -N
Changes the current topology from 1. 1 is the default behavior
of spawning the shell from one node to every node. Changing the
number to a value greater than 2 would result in dsh being
spawned on other machines as well.
--forklimit | -F fork limit
Similar to -c with a limit on the number of simultaneous
connections. dsh will wait before creating new connection if
the limit is reached. Useful when the number of nodes to be
accessed is going somewhere above 200, and using -N option is
not possible.
EXIT STATUS
The first non-zero exit code of child processes is returned, or zero if
none returned non-zero exit code.
1 if error is found in command-line specifications. 2 if signal is
received from child processes.
EXAMPLES
dsh -a w
Shows list of users logged in on all workstations.
dsh -r ssh -a -- w
Shows list of users logged in on all workstations, and use ssh
command to connect. (It should be of note that when using ssh,
ssh-agent is handy.)
dsh -r ssh -m node1 -m node2 -c -- ’echo $HOSTNAME $(cat/proc/loadavg
)’
Shows the load average of machines node1 and node2.
FILES
/etc/dsh/machines.list | $(HOME)/.dsh/machines.list
List of machine names to be used for when -a command-line option
is specified.
/etc/dsh/group/groupname | $(HOME)/.dsh/group/groupname
List of machine names to be used for when -g groupname command-
line option is specified.
/etc/dsh/dsh.conf | $(HOME)/.dsh/dsh.conf
Configuration file containing the day-to-day default.
BUGS
There should be a dcp for copying files to remote systems.
Configuration files should really be able to do something more than it
does now.
AUTHOR
Junichi Uekawa (dancer@debian.org)
Upstream page is available at
http://www.netfort.gr.jp/~dancer/software/dsh.html
SEE ALSO
rsh(1), ssh(1), remsh(1), dsh.conf(5)