Modification de Cisco : Script de sauvegarde automatique des configurations des switch
La modification peut être annulée. Veuillez vérifier les différences ci-dessous pour voir si c’est bien ce que vous voulez faire, puis publier ces changements pour finaliser l’annulation de cette modification.
Version actuelle | Votre texte | ||
Ligne 1 : | Ligne 1 : | ||
Pour sauvegarder automatiquement les configurations des switch Cisco sur un parc on va utiliser un petit script PERL fait maison. | Pour sauvegarder automatiquement les configurations des switch Cisco sur un parc on va utiliser un petit script PERL fait maison. | ||
Il va donc nécessiter une machine sur laquelle PERL est installé avec les modules suivants : | Il va donc nécessiter une machine sur laquelle PERL est installé avec les modules suivants : | ||
* Net::SSH::Perl | * Net::SSH::Perl | ||
* Sys::Syslog | * Sys::Syslog | ||
Il faudra aussi utiliser une tâche planifié pour lancer le script régulièrement. | Il faudra aussi utiliser une tâche planifié pour lancer le script régulièrement. | ||
Nous aurons aussi besoin d'un serveur {{abbr|TFTP|Trivial File Transfer Protocol}} pour recevoir les configurations facilement.<br /> | Nous aurons aussi besoin d'un serveur {{abbr|TFTP|Trivial File Transfer Protocol}} pour recevoir les configurations facilement.<br /> | ||
Ligne 40 : | Ligne 16 : | ||
-A RANGE.0 -s 192.168.1.0/24 -j ACCEPT | -A RANGE.0 -s 192.168.1.0/24 -j ACCEPT | ||
{{Info|tip=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 ...}} | |||
{{ | |||
Pour utiliser ce script il faut remplir les informations suivantes : | Pour utiliser ce script il faut remplir les informations suivantes : | ||
* $user : le nom d'utilisateur pour se connecter via {{abbr|SSH|Secured Shell}} sur le switch | |||
* $pass : le mot de passe associé | |||
* $server : adresse du serveur TFTP, une adresse IP évitera les problèmes de résolution de nom | |||
* @hosts : liste des switch à sauvegarder sous la forme ("switch1","switch2","switchX") | |||
Ensuite le script établira l'une après l'autre les connexions SSH vers les switch pour envoyer la commande de transfer du fichier de configuration vers le serveur TFTP. | Ensuite le script établira l'une après l'autre les connexions SSH vers les switch pour envoyer la commande de transfer du fichier de configuration vers le serveur TFTP. | ||
Le nom du fichier aura la forme suivante | Le nom du fichier aura la forme suivante <code>nom_du_switch-date-conf</code> | ||
date est au format Ymd (ex: 20120120) | |||
<syntaxhighlight lang="perl"> | <syntaxhighlight lang="perl"> | ||
Ligne 77 : | Ligne 38 : | ||
use Net::SSH::Perl; | use Net::SSH::Perl; | ||
use POSIX qw(strftime); | use POSIX qw(strftime); | ||
use Sys::Syslog qw(:DEFAULT setlogsock); | use Sys::Syslog qw( :DEFAULT setlogsock); | ||
# Variables à configurer | # Variables à configurer | ||
my $user = "admin"; | my $user = "admin"; #switch username | ||
my $pass = ""; | my $pass = ""; #switch password | ||
my $server = ""; | my $server = ""; #TFTP server | ||
my @hosts = ("switch1","switch2"); | my @hosts = ("switch1","switch2"); | ||
Ligne 106 : | Ligne 67 : | ||
foreach my $host (@hosts) { | 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; | |||
} | } | ||
Ligne 120 : | Ligne 81 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Category: | [[Category:Networking]] | ||