Modification de Cisco : Script de sauvegarde automatique des configurations des switch

Attention : vous n’êtes pas connecté(e). Votre adresse IP sera visible de tout le monde si vous faites des modifications. Si vous vous connectez ou créez un compte, vos modifications seront attribuées à votre propre nom d’utilisateur(rice) et vous aurez d’autres avantages.

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 :
{{ArticleHead|Adadov}}
== Prérequis ==
Afin de pouvoir utiliser ce script tous les switch doivent être capable d'accepter les connexions SSH.
Il faudra aussi avoir configuré un couple utilisateur/mot de passe identique sur chacun des switch afin de pouvoir ouvrir les connexions à la chaîne.
== 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.
=== Environnement 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.
 
Sinon il est aussi possible de les installer via CPAN (quelle que soit la distribution) de cette manière.
 
{{LxTerm|user=root|text=cpan Net::SSH::Perl
cpan Sys::Syslog}}
 
=== 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.
Pour ce faire le plus simple reste d'utiliser Cron et de placer le script dans le dossier <code>/etc/cron.daily/</code>.
=== Serveur TFTP ===


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


== 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 ...}}
 
{{Warn|Il y a un petit bug dans ce script, si le serveur TFTP n'est pas atteignable par le switch l'erreur n'est pas remontée au script ...}}
 
=== Variables ===


Pour utiliser ce script il faut remplir les informations suivantes :
Pour utiliser ce script il faut remplir les informations suivantes :


{{AlTable
* $user   : le nom d'utilisateur pour se connecter via {{abbr|SSH|Secured Shell}} sur le switch
|cols=2|fullwidth=true|row1header=true
* $pass   : le mot de passe associé
|class=wikitable
* $server : adresse du serveur TFTP, une adresse IP évitera les problèmes de résolution de nom
|Variable
* @hosts : liste des switch à sauvegarder sous la forme ("switch1","switch2","switchX")
|Description
|$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")
}}
 
=== Source ===


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 {{Fname|nom_du_switch-date-confg}}.
Le nom du fichier aura la forme suivante <code>nom_du_switch-date-conf</code>


La date est au format Ymd (ex: 20120120) afin de classer les fichier par date via l'ordre alphabétique.
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";                 # Nom d'utilisateur
my $user = "admin"; #switch username
my $pass = "";                     # Mot de passe
my $pass = ""; #switch password
my $server = "";                   # Serveur TFTP
my $server = ""; #TFTP server
my @hosts = ("switch1","switch2"); # Liste des switch
my @hosts = ("switch1","switch2");




Ligne 106 : Ligne 67 :


foreach my $host (@hosts) {
foreach my $host (@hosts) {
  my $ssh = Net::SSH::Perl->new($host);
my $ssh = Net::SSH::Perl->new($host);
  $ssh->login($user,$pass);
$ssh->login($user,$pass);
  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('err', $host.': Config not saved ',$stderr); } else { logit('info', $host.': Config saved'); }
if($exit!='0') { logit('error', $host.': Config not saved ',$stderr); } else { logit('info', $host.': Config saved'); }
  };
};
  ($@) ? ( logit('err', $@) ) : undef;
($@) ? ( logit('error', $@) ) : undef;
}
}


Ligne 120 : Ligne 81 :
</syntaxhighlight>
</syntaxhighlight>


[[Category:NetAdmin]]
[[Category:Networking]]
[[Category:Cisco]]
[[Catégorie:Backup]]
Notez bien que toutes les contributions à Adadov.net wiki peuvent être modifiées, transformées ou supprimées par d’autres utilisateurs. Si vous ne désirez pas que vos écrits soient modifiés contre votre gré, merci de ne pas les soumettre ici.
Vous nous promettez aussi que vous avez écrit ceci vous-même ou que vous l’avez copié d’une source placée dans le domaine public ou d’une ressource libre similaire (voir AdadovNet:Copyrights pour plus de détails). N’utilisez aucun travail sous droits d’auteur sans autorisation expresse !
Annuler Aide pour la modification (s’ouvre dans une nouvelle fenêtre)