dsh - Distributed shell, or dancer's shell
dsh [-m machinename | -a | -g
groupname] [-r remoteshellname] [-c | -w | -i |
-F forklimit ] -- commandline
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.
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.
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.
- /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.
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.
Junichi Uekawa (dancer@debian.org)
Upstream page is available at
http://www.netfort.gr.jp/~dancer/software/dsh.html