fetchconfig - Fetch Configuration

fetchconfig moved to https://github.com/udhos/fetchconfig.


fetchconfig is a Perl script for retrieving configuration of multiple devices. It has been tested under Linux and Windows, and currently supports a variety of devices, including Cisco IOS, Cisco Catalyst, Cisco ASA, Cisco PIX, FortiGate Firewalls, ProCurve, Alcatel Ethernet Routers (aka Riverstone), Dell PowerConnect Switches, Terayon 3200/3500CMTS, Datacom DmSwitch Switches, HP MSR Routers, Mikrotik Routers, Tellabs MSR Routers, Juniper EX Switch JunOS.


fetchconfig - Fetch Configuration
Copyright (C) 2006 Everton da Silva Marques

fetchconfig is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.

fetchconfig is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with fetchconfig; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.


  1. fetchconfig.pl expects a Perl interpreter at /usr/bin/perl.
  2. fetchconfig.pl requires the Net::Telnet module.
  3. Just unpack the fetchconfig tarball at a suitable location. Example:
    [ fetchconfig tarball available at /tmp/fetchconfig-0.0.tar.gz ]
    cd /usr/local
    tar xzf /tmp/fetchconfig-0.0.tar.gz
    ln -s fetchconfig-0.0 fetchconfig
    [ fetchconfig is now available under /usr/local/fetchconfig ]


  1. Edit the file "device_table.example" according your needs, and save it as "device_table". Example:
    [ fetchconfig available under /usr/local/fetchconfig ]
    cd /usr/local/fetchconfig
    cp device_table.example device_table
    vi device_table
  2. Run fetchconfig.pl, as in the following example:
    [ fetchconfig available under /usr/local/fetchconfig ]
    cd /usr/local/fetchconfig
    ./fetchconfig.pl -devices=device_table

    The fetchconfig.pl script will scan the "device_table" file, trying to retrieve the configuration for every device, storing configuration files under the "repository".


The device table assigned with '-device=' switch is a text file which supports two types of lines:

  1. Default options lines assign default options to a device model. The following example adds some default options to the "cisco-ios" model:

    #default        model           model-default-options
    default:        cisco-ios       user=backup,pass=fran,enable=jose
  2. Device lines define attributes of every device and optionally assign device-specific options. The following example define a device named "vpn-gw":

    #model          dev-unique-id   device-host     [device-options]
    cisco-ios       vpn-gw     keep=10,changes_only=1
    The dev-unique-id must be:
    1. an unique identifier across all devices;
    2. a valid filesystem's directory name.


Modules recognize the following options. Please verify the options supported by each module by consulting the README file of the source distribution.

pass The TELNET login password.
user The TELNET login username.
enable The priviledged enable password.
timeout How long to wait for TELNET responses from devices.
banner_timeout If given, it will override the timeout value used to wait for the 'login:' prompt. It is useful for devices which spend many seconds before issuing the initial login prompt for TELNET connections.
fetch_timeout If given, it will override the timeout value used to fetch all the configuration lines. It is useful for devices which spend several seconds building the configuration.
repository The base directory for saving the configuration files.
keep The maximum number of config files to retain for the device. When this limit is reached, the older files are discarded.
changes_only If specified as changes_only=1, only new configurations are saved. Otherwise, configurations are saved whenever the script runs; if not defined as changes_only=1, the script might possibly retain multiple identical configuration files.
show_cmd If specified as show_cmd=wrterm, "write term" will be used in place of the usual "show run" command. This is necessary for some older devices. Values other than wrterm should have no effect.
on_fetch_run Path to an external program to be called whenever the configuration is fetched.


Get latest stable release here:



ViewCVS access to CVS tree:


Anonymous access to CVS repository:

export CVS_RSH=ssh

cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/fetchconfig co fetchconfig


For suggestions, patches, bug reports, please visit support page at Savannah:


$Id: index.html,v 1.14 2016/06/28 14:42:36 evertonm Exp $