« Cisco : Script de sauvegarde automatique des configurations des switch » : différence entre les versions

De Adadov.net wiki
(Page créée avec « 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 ... <syntaxhighlight lang="perl"> #!/us... »)
 
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
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 ...
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 ...


Ligne 44 : Ligne 51 :
($@) ? ( logit('error', $@) ) : undef;
($@) ? ( logit('error', $@) ) : undef;
}
}
[[Category:Networking]]


END {
END {

Version du 1 février 2012 à 15:22

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');
}