Cisco : Script de sauvegarde automatique des configurations des switch
Sauvegarder automatiquement les configurations d'une liste de switch cisco avec un script perl
Par contre il ne faut pas oublier d'ouvrir les ports du firewall, pour tftp c'est le port UDP 69, le mieux est de le restreindre sur les plages des switch ;-)
-A INPUT -m state --state NEW -m udp -p udp --dport 69 -j RANGE.0 -A RANGE.0 -s 192.168.0.0/24 -j ACCEPT -A RANGE.0 -s 192.168.1.0/24 -j ACCEPT
FIXME Il y a un petit bug dans ce script, si le serveur n'est pas atteignable par le switch l'erreur n'est pas remontée au script ...
#!/usr/bin/perl
use strict;
use Net::SSH::Perl;
use POSIX qw(strftime);
use Sys::Syslog qw( :DEFAULT setlogsock);
# Variables à configurer
my $user = "admin"; #switch username
my $pass = ""; #switch password
my $server = ""; #TFTP server
my @hosts = ("switch1","switch2");
sub logit {
my $programname;
my ($priority, $msg) = @_;
return 0 unless ($priority =~ /info|err|debug/);
setlogsock('unix');
openlog($programname, 'pid,cons', 'local1');
syslog($priority, $msg);
closelog();
return 1;
}
BEGIN {
logit('info', 'Cisco conf Backup Started');
}
my $now = strftime("%Y%m%d", localtime(time));
foreach my $host (@hosts) {
my $ssh = Net::SSH::Perl->new($host);
$ssh->login($user,$pass);
eval {
my ($stdout, $stderr, $exit) = $ssh->cmd('copy running-config tftp://'.$server.'/',"\n".$host."-".$now."-confg\n");
if($exit!='0') { logit('error', $host.': Config not saved ',$stderr); } else { logit('info', $host.': Config saved'); }
};
($@) ? ( logit('error', $@) ) : undef;
}
[[Category:Networking]]
END {
logit('info', 'Cisco conf Backup Ended');
}