The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

cisconf - Cisco configuration management via TFTP

SYNOPSIS

    cisconf -a <conf>
    cisconf -d <conf>
    cisconf -e <conf> [-n]
    cisconf -r <conf>
    cisconf -l <conf>
    cisconf -s <conf> [-w]
    cisconf -i
    cisconf -h
    cisconf -v

DESCRIPTION

The cisconf utility allows to maintain a a set of Cisco router configurations as files. Configuration files can be loaded from routers or saved into routers by using a local TFTP server.

Adding router configurations

Usually you start with adding router configurations to the config file, ~etc_dir~/configuration. This is done by invoking

    cisconf -a <conf>

where <conf> is a short and unique name for the configuration you like to add.

The script will ask you some questions interactively and allow you to enter the new routers settings, in particular the IP address, the login username, the login and enable password, a description and a list of users that are allowed to manage the router.

Deleting router configurations

You can remove a given router configuration with

    cisconf -d <conf>

where <conf> is the name you gave the router when invoking cisconf -a <conf>.

Editing router configurations

Router configurations can be edited with

    cisconf -e <conf> [-n]

This will invoke the editor from the environment variable EDITOR. If you didn't set this variable, the first editor from the editors list in the configuration file ~etcdir~/configuration is used.

After you have modified the configuration, the revision control system will be invoked, unless you specify the option -n. Revision control will be done by using the command from the ci attribute in the configuration file.

Printing a router configuration

The command

    cisconf -p <conf>

will print the configuration file of the given router to stdout.

Loading a configuration file from the router

The best starting point for creating a new configuration is of course loading the current configuration of the router. This is done by invoking the command

    copy running-config tftp

on the router and storing the configuration on the local TFTP server. The command

    cisconf -l <conf>

will do that for you, creating the file ~tftp_dir~/<conf<gt.conf>.

Of course this requires an appropriately configured TFTP server with write permissions in the directory ~tftp_dir~.

Storing a configuration file on the router

The counterpart of the -l option is

    cisconf -s <conf> [-w]

This will read the file ~etcdir~/<conf<gt.conf>, strip comments and empty lines and store the result in ~etcdir~/<conf<gt.conf>. The latter file will then be stored on the router by executing the command

    copy tftp running-config

Note, that by default the new configuration is not written into the non-volatile memory of the router! The option -w modifies this behaviour by executing the command

    write memory

on the router, if the configuration has successfully be stored on the router.

Listing router configurations

The command

    cisconf -i

will print a list of all router configurations accessible by the current user.

Printing a help message

You get a short help message by invoking

    cisconf -h

Version number

The command

    cisconf -v

will print the programs version number and exit immediately.

AUTHOR AND COPYRIGHT

This program is

    Copyright (C) 1998    Jochen Wiedmann
                          Am Eisteich 9
                          72555 Metzingen
                          Germany

                          Phone: +49 7123 14887
                          Email: joe@ispsoft.de

All rights reserved.

You may distribute this module under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.

SEE ALSO

Cisco::Conf(3), Cisco::Conf::Install(3), tftpd(8)

EOF

require Cisco::Conf; my $config = Cisco::Conf->_ReadConfigFile('configuration');

require Config; $config->{'startperl'} = $Config::Config{'startperl'};

$script =~ s/\~(\w+)\~/$config->{$1}/eg;

if (!open(FILE, ">cisconf") || !print FILE ($script) || !close(FILE)) { die "Error while writing cisconf script: $!"; }