knipknap/exscript

View on GitHub
doc/exscript.rst

Summary

Maintainability
Test Coverage
Command Line Options
====================

Overview
--------

You can pass parameters (or lists of parameters) into the templates and
use them to drive what happens on the remote host. Exscript easily
supports logging, authentication mechanisms such as TACACS and takes
care of synchronizing the login procedure between multiple running
connections.

These features are enabled using simple command line options. The
following options are currently provided:

::

    Options:
      --version             show program's version number and exit
      -h, --help            show this help message and exit
      --account-pool=FILE   Reads the user/password combination from the given
                            file instead of prompting on the command line. The
                            file may also contain more than one user/password
                            combination, in which case the accounts are used round
                            robin.
      -c NUM, --connections=NUM
                            Maximum number of concurrent connections. NUM is a
                            number between 1 and 20, default is 1.
      --csv-hosts=FILE      Loads a list of hostnames and definitions from the
                            given file. The first line of the file must have the
                            column headers in the following syntax: "hostname
                            [variable] [variable] ...", where the fields are
                            separated by tabs, "hostname" is the keyword
                            "hostname" and "variable" is a unique name under which
                            the column is accessed in the script. The following
                            lines contain the hostname in the first column, and
                            the values of the variables in the following columns.
      -d PAIR, --define=PAIR
                            Defines a variable that is passed to the script. PAIR
                            has the following syntax: STRING=STRING.
      --default-domain=STRING
                            The IP domain name that is used if a given hostname
                            has no domain appended.
      --delete-logs         Delete logs of successful operations when done.
      -e EXSCRIPT, --execute=EXSCRIPT
                            Interprets the given string as the script.
      --hosts=FILE          Loads a list of hostnames from the given file (one
                            host per line).
      -i, --non-interactive
                            Do not ask for a username or password.
      -l DIR, --logdir=DIR  Logs any communication into the directory with the
                            given name. Each filename consists of the hostname
                            with "_log" appended. Errors are written to a separate
                            file, where the filename consists of the hostname with
                            ".log.error" appended.
      --no-echo             Turns off the echo, such that the network activity is
                            no longer written to stdout. This is already the
                            default behavior if the -c option was given with a
                            number greater than 1.
      -n, --no-authentication
                            When given, the authentication procedure is skipped.
                            Implies -i.
      --no-auto-logout      Do not attempt to execute the exit or quit command at
                            the end of a script.
      --no-prompt           Do not wait for a prompt anywhere. Note that this will
                            also cause Exscript to disable commands that require a
                            prompt, such as "extract".
      --no-initial-prompt   Do not wait for a prompt after sending the password.
      --no-strip            Do not strip the first line of each response.
      --overwrite-logs      Instructs Exscript to overwrite existing logfiles. The
                            default is to append the output if a log already
                            exists.
      -p STRING, --protocol=STRING
                            Specify which protocol to use to connect to the remote
                            host. Allowed values for STRING include: dummy,
                            pseudo, ssh, ssh1, ssh2, telnet. The default protocol
                            is telnet.
      --retry=NUM           Defines the number of retries per host on failure.
                            Default is 0.
      --retry-login=NUM     Defines the number of retries per host on login
                            failure. Default is 0.
      --sleep=TIME          Waits for the specified time before running the
                            script. TIME is a timespec as specified by the 'sleep'
                            Unix command.
      --ssh-auto-verify     Automatically confirms the 'Host key changed' SSH
                            error  message with 'yes'. Highly insecure and not
                            recommended.
      --ssh-key=FILE        Specify a key file that is passed to the SSH client.
                            This is equivalent to using the "-i" parameter of the
                            openssh command line client.
      -v NUM, --verbose=NUM
                            Print out debug information about the network
                            activity. NUM is a number between 0 (min) and 5 (max).
                            Default is 1.
      -V NUM, --parser-verbose=NUM
                            Print out debug information about the Exscript
                            template parser. NUM is a number between 0 (min) and 5
                            (max). Default is 0.

Using Account Pooling
---------------------

It is possible to provide an account pool from which Exscript takes a
user account whenever it needs to log into a remote host. Depending on
the authentification mechanism used in your network, you may
significantly increase the speed of parallel connections by using more
than one account in parallel. The following steps need to be taken to
use the feature:

#. Create a file with the following format::

       [account-pool]
       user=password
       other_user=another_password
       somebody=yet_another_password

   Note that the password needs to be base64 encrypted, just putting
   plain passwords there will NOT work.

#. Save the file. It is assumed that you are aware of the security
   implications of saving your login passwords in a text file.

#. Start Exscript with the ``–account-pool FILE`` option. For example::

       exscript --account-pool /home/user/my_accounts my.exscript host4

Using a CSV file as input
-------------------------

By providing the –csv-hosts option you may pass a list of hosts to
Exscript while at the same time providing a number of variables to the
script. The CSV file should have the following format::

    hostname my_variable another_variable
    myhost value another_value
    yourhost hello world

Note that fields are separated using the tab character, and the first
line must start with the string “hostname” and is followed by a list of
column names.

In the Exscript, you may then access the variables using those column
names::

    ls -l $my_variable
    touch $another_variable