automate backup of switch configuration

Unanswered Question
Nov 14th, 2007
User Badges:

Hi all,

I need some recommendation on backing up configuration commands thru automation. I have upgrade our hub to switches and all are in total of 65 and 20 more add.

I did the manual way of placing them at a TFTP server but it's time consuming.

I tried the network assistant but i still have to click to save. I want a solution where i could just run it on a batch file/script or thru scheduled task.


  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 0 (0 ratings)
Pavel Bykov Wed, 11/14/2007 - 02:41
User Badges:
  • Silver, 250 points or more


The feature you are probably looking for is called KRON, or command scheduler.

For more information see this document:

It can for example copy configuration to TFTP every day at certain time, or do whatever you do on a regular basis.

Also, you can use "archive" command for local rollback purposes:

Works very good.

Hope this helps.

Please rate all helpful posts.

inzeos781 Wed, 11/14/2007 - 07:47
User Badges:

You would need to modify this to support your environment; however, it gives you the basic ideas of what you would have to implement.

I wrote parts of it, re-purposed other parts of public scripts.


use DBI;

use Cisco::CopyConfig;

use Time::localtime;

# sub routine to create a current date time stamp for file naming

sub date_time


$tm = localtime;

($SEC, $MIN, $HOUR, $DAY, $MONTH, $YEAR) = ($tm->sec, $tm->min, $tm->hour,$tm->mday, ($tm->mon)+1, ($tm->year)+1900);

$datetime = sprintf("%4d%02d%02d%02d%02d%02d",$YEAR,$MONTH,$DAY,$HOUR,$MIN,$SEC);

return $datetime;


# sub routine to initiate the backup of a cisco device snmp/tftp

sub backup_device


# copy arguments to local vars

($ip_addr, $snmprw, $tftp_file, $tftp_serv) = ($_[0], $_[1], $_[2], $_[3]);

# backup configuration via tftp using snmp

$config = Cisco::CopyConfig->new(

Host => $ip_addr,

Comm => $snmprw


print "Attempting Backup.\n";

# initiate with snmp the tftp file copy

$config->copy($tftp_serv, $tftp_file);


Enable these two print statements for debugging information

# dump an error if one exists

print $config->error();

print "\n@_\n";



# tftp requirements

my $tftp_serv = 'x.x.x.x';

# database connectivity requirements

my $dsn = 'DBI:mysql:cback:localhost';

my $db_user_name = 'xxxxxxxx';

my $db_password = 'xxxxxxxx';

#my ($id, $password);

# database connection

my $dbh = DBI->connect($dsn, $db_user_name, $db_password);

# database query

my $sth = $dbh->prepare(qq{

SELECT id, hostname, INET_NTOA(ipv4) AS 'ip_addr', snmprw FROM device


# database execute query


# go through results of query

while (my ($id, $hostname, $ip_addr, $snmprw) =

$sth->fetchrow_array()) # keep fetching until

# there's nothing left


# get current date

$back_date = &date_time();

# output some status information

print "($id) Host => $hostname (IPv4: $ip_addr)\n";

# run backup function



# database cleanup connections



This Discussion