[Shell+EXPECT]Automatisation de commandeCISCO
lml-mike
Messages postés
487
Statut
Contributeur
-
ihssane -
ihssane -
Bonjour,
Voici Le script final, optimisé, testé et retesté, afin de pouvoir rentrer à partir d'un fichier commandes.txt des commandes CISCO sur un nombre d'équipements illimité, dont les IP sont précisés dans un fichier liste.txt.
Ce script comporte de nombreux éléments, comme l'intégration d'EXPECT dans du SHELL ou encore le contôle d'erreur par log en fonction de l'erreur généré par le script EXPECT.
Merci à jipicy pour m'avoir aidé à réaliser ce code.
Voici Le script final, optimisé, testé et retesté, afin de pouvoir rentrer à partir d'un fichier commandes.txt des commandes CISCO sur un nombre d'équipements illimité, dont les IP sont précisés dans un fichier liste.txt.
Ce script comporte de nombreux éléments, comme l'intégration d'EXPECT dans du SHELL ou encore le contôle d'erreur par log en fonction de l'erreur généré par le script EXPECT.
Merci à jipicy pour m'avoir aidé à réaliser ce code.
#script.sh echo "veuillez donner le mot de passe" stty -echo read password stty echo rm -f rapport_erreurs.log cat liste.txt | while read routeur; do if [ "$routeur" = "" ] then continue fi time -p expect > tmp_routeur.log 2>&1 << EOF spawn ssh admin@$routeur expect "Password:" send "$password\r" expect "#" EOF COD_RET=$? TEMPS=`grep 'real ' tmp_routeur.log | sed 's/real /§/' | cut -d'§' -f2 | cut -d' ' -f1 | cut -d'.' -f1` if [ $TEMPS -gt 15 ] then echo "Le routeur $routeur ne réponds pas !"; echo "$routeur : connection timed out" >> rapport_erreurs.log continue fi if [ "$COD_RET" != "0" ] then #Erreur de connexion au routeur en SSH expect > tmp_routeur.log 2>&1 << EOF spawn telnet $routeur send "admin\r" expect "Password:" send "$password\r" expect "#" EOF COD_RET=$? if [ "`grep 'Host name lookup failure' tmp_routeur.log`" ] then echo "le routeur $routeur n'existe pas !" echo "$routeur : does not exist" >> rapport_erreurs.log continue elif [ "`grep 'Authentication failed' tmp_routeur.log`" ] then echo "Mot de passe erroné pour $routeur !" echo "$routeur : wrong log-in/password" >> rapport_erreurs.log continue elif [ "`grep 'Connection refused' tmp_routeur.log`" ] then echo "Connexion à distance sur $routeur désactivé !" echo "$routeur : vty connection disabled" >> rapport_erreurs.log continue elif [ "`grep 'No route to host' tmp_routeur.log`" ] then echo "Alias DNS $routeur existant mais IP invalide !" echo "$routeur : No route to host" >> rapport_erreurs.log continue elif [ "`grep 'ProCurve' tmp_routeur.log`" ] then echo "routeur $routeur HP et non Cisco !" echo "$routeur : non Cisco router (HP ProCurve)" >> rapport_erreurs.log continue elif [ "`grep 'Alcatel' tmp_routeur.log`" ] then echo "routeur $routeur Alcatel et non Cisco !" echo "$routeur : non Cisco router (Alcatel)" >> rapport_erreurs.log continue elif [ "$COD_RET" != "0" ] then echo "Problème de connexion au routeur $routeur en Telnet !" echo "$routeur : connection problem" >> rapport_erreurs.log continue fi fi cat commandes.txt | while read commande; do expect >> tmp_routeur.log 2>&1 << EOF send "$commande\r" expect "#" EOF done expect >> tmp_routeur.log 2>&1 << EOF send "end\r" expect "#" send "exit\r" expect "closed" exit EOF rm -f tmp_routeur.log done
A voir également:
- [Shell+EXPECT]Automatisation de commandeCISCO
- Classic shell - Télécharger - Personnalisation
- Logiciel automatisation mac - Guide
- Secure shell - Télécharger - Divers Web & Internet
- Shell infrastructure host c'est quoi - Guide
- Shell startup windows 10 - Guide