UPDATE : Script PERL Centreon permettant de sauvegarder un switch ou un routeur Cisco.

Avec ce script perl Centreon vous pourrez mettre en place une stratégie de sauvegarde de vos switchs et routeur Cisco avec Centreon. Les sauvegardes sont stockées sur un serveur TFTP. Découvrons sans plus attendre ce script PERL.

Update du 28/08/2014.

  • Je n’utilise plus le module Net::OpenSSH pour me connecter sur le serveur TFTP pour supprimer le fichier de sauvegarde mais Net::Telnet. Avec le module OpenSSH lorsqu’on sauvegarde plusieurs switchs en même temps cela génère une erreur et je n’ai pas trouvé l’astuce pour contourner le problème.
  • J’ai aussi ajouté un paramètre PERFDATA qui permet de générer un graphique avec la taille du backup. Cela permet de suivre l’évolution de la taille de la sauvegarde.

Comme d’habitude vous retrouverez ce script et les différentes mises à jour et correctifs sur mon dépôt Github à cette adresse : https://github.com/quick-tutoriel (n’hésitez pas à vous abonner).

Backup_switch_cisco_1

Ce script utilise 3 modules CPAN : Net ::OpenSSH, Net::Telnet, Net ::SNMP et Cisco ::CopyConfig (librairie permettant d’utiliser SNMP pour la sauvegarde des matériels).

Backup_switch_cisco_2

Ce module CPAN est très pratique car il permet d’utiliser SNMP et la communauté private de l’équipement pour effectuer des sauvegardes. Pas besoin de fournir le login et le mot de passe de l’équipement. De plus des routines d’erreur sont prévues en cas d’échec de connexion ou de sauvegarde. Pas la peine de réinventer la roue.

Backup_switch_cisco_3

J’utilise toujours le même modèle pour mes scripts. Donc avant de commencer le traitement, je vérifie que toutes les options soient saisies :

  • La variable $opt_community permet d’indiquer la communauté de l’équipement. Généralement on accède avec la communauté Public (read) pour récupérer des informations. Mais la particularité de de script sera d’utiliser la communauté Private (read-write) de son équipement à la place des login et mot de passe habituels.
  • La variable $opt_iprouteur permet de saisir l’adresse ip du switch ou du routeur.
  • La variable $opt_iptftp permet de saisir l’adresse ip du serveur TFTP. C’est sur ce serveur que seront stockées les configurations de vos équipements, généralement dans le répertoire par défaut /TFTPBOOT.
  • La variable $opt_sauvegarde permet de saisir le nom du fichier de sauvegarde.

Backup_switch_cisco_4

Nous sommes obligés de supprimer la dernière sauvegarde dans le répertoire TFTPBOOT avant d’effectuer une sauvegarde sinon elle échoue. On se connecte en Telnet sur le serveur TFTP via le module Net ::Telnet.

Backup_switch_cisco_5

On utilise le module CPAN Cisco::CopyConfig qui permet de sauvegarder l’équipement sans mot de passe en utilisant le SNMP. Dans la capture ci-dessus nous voyons les variables nécessaires pour initialiser une connexion sur l’équipement.

La variable :

  • Host permet de récupérer l’ip saisie lors de l’exécution du plugin
  • Comm permet de saisir la communauté en lecture/écriture de l’équipement (généralement par défaut private)
  • Tmout cette valeur est fixée à 30 secondes (vous pouvez l’adapter à vos besoins). Au bout de 30 secondes si l’équipement ne répond pas la connexion est abandonnée.

Backup_switch_cisco_6

Nous passons maintenant à la sauvegarde de l’équipement. Pour cela on utilise la fonction copy du module (ligne 106). Cette fonction attend 2 paramètres l’adresse ip du serveur tftp ($opt_iptftp) et le nom de la sauvegarde ($opt_sauvegarde).

Si une erreur est rencontrée lors de la sauvegarde on affiche le message d’erreur via la variable $config->{err} (ligne 130).

Si la sauvegarde se déroule bien on fait une double vérification (ligne 115) on vérifie que le fichier existe dans le répertoire TFTPBOOT. On récupère le résultat de la commande via Telnet. Si la taille est >0 alors la sauvegarde s’est bien déroulée, sinon nous affichons une erreur dans Centreon.

Backup_switch_cisco_7

Comme d’habitude l’affichage des messages dans Centreon est généré via la variable $Output (variable qui contient les messages d’erreur, de succès, …) et $status qui affiche le statut de retour du plugin OK, WARNING, CRITICAL, UNKNOWN. Dans cette mise à jour nous avons en plus la variable $perfdata qui contient la taille du fichier de sauvegarde afin de générer un graphique et suivre l’évolution de la taille du fichier.

Pour ma part j’utilise une CES (Centreon Entreprise Server) virtualisé. Le répertoire ou je dois copier mes plugins est le suivant : /usr/lib/nagios/plugins.

Avant d’intégrer le plugin dans Centreon je l’exécute toujours sur mon serveur pour vérifier que tout fonctionne correctement. Les scripts sont exécutés par l’utilisateur nagios (Version CES V2.1).

Backup_switch_cisco_8

Chaque plugin doit avoir une aide. Vous pouvez l’afficher avec le commutateur –h, cela vous indique les arguments à passer au plugin.

Voici la commande à passer :

./check_snmp_cisco_backup_config.pl –C « community » -I « ip_switch » -T « ip_tftp » -F « nom_sauvegarde »

Je vous conseille de toujours exécuter votre plugin avec l’utilisateur Nagios avant de l’intégrer dans Centreon.

#su nagios
#./check_snmp_cisco_backup_config.pl –C private –I 192.168.2.68 –T 1.10.8.37 –F R416.cfg

Backup_switch_cisco_9

Le plugin fonctionne correctement. Vous pouvez maintenant l’intégrer dans Centreon. Si vous avez des difficultés dans Centreon pour créer votre plugin, j’ai détaillé lors de mon premier tutoriel la création d’un plugin avec des modèles de services et d’hôtes à cette adresse : https://quick-tutoriel.com/script-perl-pour-la-sauvegarde-dune-appliance-cisco-asa-5500/.

Backup_switch_cisco_10

[information]Si vous modifiez et/ou utiliser le plugin merci de laisser un petit commentaire cela fait toujours plaisir.[/information]

Précisions et ou améliorations concernant l’utilisation du plugin :

  • N’oublier pas d’utiliser la communauté Private de votre équipement sinon le plugin ne fonctionnera pas.
  • Ce plugin ne gère pas les versions de sauvegarde. Vu que la dernière sauvegarde est supprimée avant l’exécution du script, si celle-ci ne se fait pas correctement on peut se retrouver sans backup de son équipement. Le mieux pour l’instant est de réaliser un script sur son serveur TFTP qui permet de copier le répertoire de backup à un autre endroit.
  • On pourrait rajouter un graphique qui permet de suivre l’évolution de la taille de la sauvegarde.
  • Reste aussi à implémenter la sauvegarde du fichier vlan.dat qui permet de sauvegarder les vlans de son équipement.

N’oubliez pas le dépôt Github pour récupérer le script, à cette adresse : https://github.com/quick-tutoriel (n’hésitez pas à vous abonner).

That’s All.

2 Potins

  1. Pas de quoi. Si je peux aider.

    @+

  2. Je ne savais pas que Centreon pouvait servir à backup du Cisco, merci pour le tuto !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *