lml-mike
Messages postés453Date d'inscriptionvendredi 16 février 2007StatutContributeurDernière intervention18 novembre 2018
-
11 mars 2008 à 13:55
ihssane -
9 juin 2010 à 14:17
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.
#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