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 : | ||
== Installation du Script == | == Installation du Script == | ||
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. | ||
=== | === Environement PERL === | ||
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 | ||
Pour installer ces modules s'il ne sont pas déjà présents sur votre système le mieux est de se référer à votre distribution pour la méthode d'installation conseillée. | Pour installer ces modules s'il ne sont pas déjà présents sur votre système le mieux est de se référer à votre distribution pour la méthode d'installation conseillée. | ||
Ligne 21 : | Ligne 14 : | ||
Sinon il est aussi possible de les installer via CPAN (quelle que soit la distribution) de cette manière. | Sinon il est aussi possible de les installer via CPAN (quelle que soit la distribution) de cette manière. | ||
{{ | {{LinuxTerminal|user=root|text=cpan Net::SSH::Perl}} | ||
cpan Sys::Syslog}} | {{LinuxTerminal|user=root|text=cpan Sys::Syslog}} | ||
=== Planification === | === Planification === | ||
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. | ||
=== Serveur TFTP === | === Serveur TFTP === | ||
Ligne 42 : | Ligne 33 : | ||
== Script == | == Script == | ||
{{ | {{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-confg</code> | ||
date est au format Ymd (ex: 20120120) | |||
<syntaxhighlight lang="perl"> | <syntaxhighlight lang="perl"> | ||
Ligne 77 : | Ligne 55 : | ||
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 110 : | Ligne 88 : | ||
eval { | eval { | ||
my ($stdout, $stderr, $exit) = $ssh->cmd('copy running-config tftp://'.$server.'/',"\n".$host."-".$now."-confg\n"); | my ($stdout, $stderr, $exit) = $ssh->cmd('copy running-config tftp://'.$server.'/',"\n".$host."-".$now."-confg\n"); | ||
if($exit!='0') { logit(' | if($exit!='0') { logit('error', $host.': Config not saved ',$stderr); } else { logit('info', $host.': Config saved'); } | ||
}; | }; | ||
($@) ? ( logit(' | ($@) ? ( logit('error', $@) ) : undef; | ||
} | } | ||
Ligne 120 : | Ligne 98 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Category: | [[Category:Networking]] | ||