Backup de config cisco
28 May 2014Comme vous le savez tous, je suis en train de préparer mon CCIE RS, et comme toute bonne personne organisée et avide de connaissances, j’ai décidé de scripter un peu le tout pour me simplifier la vie et me concentrer sur l’essentiel (les fameux 80/20).
Bien sur il existe le formidable outil RANCID. Dans mon cas, je pense également l’utiliser, mais il faut que je trouve un moyen de changer le port SSH pour chaque device.
En effet je passe par un rebond qui est le routeur ACCESS doté d’une NM32A et qui connecte les equipements via un cable octal. Mais en lisant la doc, et en testant cela doit pouvoir le faire (je regarderai plus tard)
Donc je me suis intéressé au langage “Expect”
#!/usr/bin/expect
set device [lrange $argv 0 0]
set user [lrange $argv 1 1]
set pass [lrange $argv 2 2]
set enable [lrange $argv 3 3]
set port [lrange $argv 4 4]
set timeout 60
spawn ssh -p $port $user@$device
expect “*assword: “
send “$pass\n”
expect “>”
send “en\n”
expect “*assword:”
send “$enable\n”
log_file $device.txt
send “term len 0\n”
send “show running-config\n”
expect “end\r”
send “\n”
send “exit\n”
log_file
Bon ce script marche mais entre temps, j’ai regardé pour rancid et un peu cherché (pas testé)
Pour Rancid voici la tête d’un .cloginrc
add method R1.lab {ssh:-2001}
add password R1.lab cisco cisco
add method R2.lab {ssh:-2002}
add password R2.lab cisco cisco
add method R3.lab {ssh:-2003}
add password R3.lab cisco cisco
add method R4.lab {ssh:-2004}
add password R4.lab cisco cisco
add method R5.lab {ssh:-2005}
add password R5.lab cisco cisco
add method R6.lab {ssh:-2006}
add password R6.lab cisco cisco
add method R7.lab {ssh:-2007}
add password R7.lab cisco cisco
add method R8.lab {ssh:-2008}
add password R8.lab cisco cisco
add method SW1.lab {ssh:-2011}
add password SW1.lab cisco cisco
add method SW2.lab {ssh:-2012}
add password SW2.lab cisco cisco
add method SW3.lab {ssh:-2013}
add password SW3.lab cisco cisco
add method SW4.lab {ssh:-2014}
add password SW4.lab cisco cisco
Il faut bien sur renseigner son fichiers hosts du serveur exécutant RANCID. Ici seulement le port diffère…
Avec un SVNweb et un crontab toutes les 10 minutes, on doit pouvoir mettre en place un suivi quasi temps réel des confs avec une interface web *clickaconviajaxstyle*