--------------------
README file for Dish
--------------------

The diligence shell 'dish' executes commands on several hosts via ssh/rsh/telnet
and also makes easy the distribution of files by scp/rcp, a remote password
change, etc. It can process hosts in parallel mode, and is a powerful system
administration tool for a group/cluster of heterogeneous hosts allowing remote
control from a single point of management. See the manual page for examples
of usage.

Download
========
You can find the newest version of dish at http://gnu.mirendom.net/dish.shtml

Installation
============
Dish needs the following software in order to work:
    - Tcl
    - Expect (see http://expect.nist.gov/)
    - A program for logging into a remote machine like ssh, rsh or telnet
    - A remote file copy program like scp or rcp [optionally - if you want to
      distribute files]

It can be installed in user directories or at system level. The default root
for installation is /usr/local, but you can change the destination directory
for the executable by using '-b <bindir>', respectively '-m <mandir>' for
the destination of the man page. In case you are root, the default ownership
of the files is set to '0:0'.

Installation examples
---------------------
1. Install as unprivileged user to $HOME/bin and $HOME/man directories
   ./install.sh -i -q -b $HOME/bin -m $HOME/man

2. Default installation which needs explicit confirmation before execution
   su -
   ./install.sh -i

3. Install to /usr/bin and /usr/share/man/man1 whereas the files should be
   owned by user 'bin' and group 'bin'. Don't ask to confirm.
   su -
   ./install.sh -i -q -b /usr/bin -m /usr/share/man/man1 -o bin:bin

Configuration
=============
In general, you don't need to configure 'dish' at all. However, every time you
call the program, you have to specify the command-line options, a group of
target hosts, and then to type the password. In case you need to administer the
same hosts every time, and you want to use the same configuration, it's more
convenient to set pre-defined values for dish. The program looks for following
files in its default configuration directory $HOME/.dish:

hosts        - list of hosts/accounts which should be processed
rests        - list of hosts/accounts which will be excluded
pass         - list of passwords for the various users/accounts
options      - list of command-line options with their arguments
options.dicp - the default "options" file in copy mode when program
               called as 'dicp'

The format of these files is described in the manual page. Example config-files are located in the subdirectory ./config_examples. In order to use them, you
should create a '$HOME/.dish' directory, then copy the files into it, and
adapt them.

New features
============
For major changes, new features and bug fixes see the NEWS file.

Known problems
==============
When Tcl is compiled with "--enable-threads", Dish hangs in parallel mode
(options `-F' and `-f'). Typically this is the case with Debian-based
distributions (Debian, Ubuntu, Knoppix, etc.) where Tcl is compiled with
thread support per default. The only remedy is to recompile and install Tcl
with threads disabled. For example, in Debian/GNU you can proceed as follows:

su -                         => Switch to user root
cd /tmp                      => Go into directory /tmp
apt-get source tcl8.4        => Install the Tcl source code (version 8.4)
cd tcl8.4-*                  => Change directory to the source
vi debian/rules              => Delete "--enable-threads" in rule "build-stamp:"
dpkg-buildpackage -rfakeroot => Rebuild the software package
cd ..
dpk -i tcl8.4*.deb           => Install the new packages


Copyright
=========
Copyright (C) 2003-2013 Dimitar Ivanov, <dimitar.ivanov@mirendom.net>

This is free software; You can redistribute it and/or modify it under the
terms of the GNU General Public License, Version 3 or later. For the full
text of the licence see the LICENCE file.
