[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