#commandes.txt conf t router ospf 100 network 50.50.100.0 0.0.0.255 area 0 exit interface fa0/0 ip ospf hello-interval 5 ip ospf dead-interval 20 exit area 0 authentication message-digest end write mem
# liste.txt 10.25.85.46 routeur-marseille switch-assemblee-generale 80.54.136.105
#!/bin/bash
#script.sh
echo "veuillez donner le mot de passe"
stty -echo #[1]
read password
stty echo
export ssh='./ssh.sh' #[2]
export telnet='./telnet.sh'
export erreur='./rapport_erreurs.log'
export temp='./tmp_routeur.log'
export cmdcisco='./commandes.txt'
export liste='./liste.txt'
export password
export routeur
export commande
rm -f $erreur #[3]
rm -f $ssh
rm -f $telnet
cat $liste | while read routeur;
do
if [ "$routeur" != "" ]
then
if[ ! -f $ssh ] #[4]
then
echo 'expect 2>&1 << EOF'>> $ssh
echo 'spawn ssh admin@$routeur' >> $ssh
echo 'expect {' >> $ssh
echo '"Password:" {send "$password\r"}' >> $ssh
echo 'timeout {exit}' >> $ssh
echo ' }' >> $ssh
echo 'expect "#"' >> $ssh
cat $cmdcisco | while read commande
do
echo "send \"$commande\r\""
echo 'expect "#"'
done >> $ssh
echo 'send "exit\r"' >> $ssh
echo 'expect "closed"' >> $ssh
echo 'exit' >> $ssh
echo 'EOF' >> $ssh
chmod +x $ssh #[5]
fi
time -p $ssh > $temp 2>&1 #[6]
COD_RET=$?
auth=`cat $temp | grep -c "Password: "` #[7]
if [ "$auth" -gt "1" ]
then
echo "Problème d'authentification sur $routeur !"
echo "$routeur : wrong log-in/password" >> $erreur
continue
fi
temps=`grep 'real ' $temp | sed 's/real /§/' | cut -d'§' -f2 | cut -d' ' -f1 | cut -d'.' -f1`
if [ $temps -ge 10 -a ! "`grep 'closed' $temp`" ] #[8]
then
echo "L'equipement $routeur ne réponds pas !";
echo "$routeur : connection timed out" >> $erreur
continue
fi
if [ "$COD_RET" != "0" ] #[9]
then
#Erreur de connexion a l'équipement en SSH
if [ ! -f $telnet ]
then
echo 'expect 2>&1 << EOF'>> $telnet
echo 'spawn telnet $routeur' >> $telnet
echo 'send "admin\r"' >> $telnet
echo 'expect "Password:"' >> $telnet
echo 'send "$password\r"' >> $telnet
echo 'expect "#"' >> $telnet
cat $cmdcisco | while read commande
do
echo "send \"$commande\r\""
echo 'expect "#"'
done >> $telnet
echo 'send "exit\r"' >> $telnet
echo 'expect "closed"' >> $telnet
echo 'exit' >> $telnet
echo 'EOF' >> $telnet
chmod +x $telnet
fi
$telnet > $temp 2>&1
fi
COD_RET=$?
auth=`cat $temp | grep -c "Password: "` #[10]
if [ "$auth" -gt "1" ]
then
echo "Problème d'authentification sur $routeur !"
echo "$routeur : wrong log-in/password" >> $erreur
elif [ "`grep 'Host name lookup failure' $temp`" ]
then
echo "l'equipement $routeur n'existe pas !"
echo "$routeur : does not exist" >> $erreur
elif [ "`grep 'Unknown host' $temp`" ]
then
echo "la saisie de l'ip ou du nom $routeur est incorrecte !"
echo "$routeur : wrong spelling" >> $erreur
elif [ "`grep 'send: spawn id exp4 not open' $temp`" ]
then
echo "/!\ ERREUR dans la procédure. Consultez le fichier log de $routeur !!!"
echo "$routeur : Expect script execution failed !" >> $erreur
cp $temp $routeur.error.log
elif [ "`grep 'Authentication failed' $temp`" ]
then
echo "Mot de passe erroné pour $routeur !"
echo "$routeur : wrong log-in/password" >> $erreur
elif [ "`grep 'Connection refused' $temp`" ]
then
echo "Connexion à distance sur $routeur désactivé !"
echo "$routeur : vty connection disabled" >> $erreur
elif [ "`grep 'No route to host' $temp`" ]
then
echo "Alias DNS $routeur existant mais IP invalide !"
echo "$routeur : No route to host" >> $erreur
elif [ "`grep 'ProCurve' $temp`" ]
then
echo "routeur $routeur HP et non Cisco !"
echo "$routeur : non Cisco router (HP ProCurve)" >> $erreur
elif [ "`grep 'Alcatel' $temp`" ]
then
echo "routeur $routeur Alcatel et non Cisco !"
echo "$routeur : non Cisco router (Alcatel)" >> $erreur
elif [ "`grep 'Welcome to X1000' $temp`" ]
then
echo "routeur $routeur X1000 et non Cisco !"
echo "$routeur : non Cisco equipement (X1000)" >> $erreur
elif [ "`grep '% Unknown command' $temp`" -o "`grep '% Invalid' $temp`" ]
then
echo "/!\ Commandes Cisco non reconnues par l'equipement. Consultez le fichier log de $routeur !!!"
echo "$routeur : Unrecognized commands found" >> $erreur
cp $temp $routeur.error.log
elif [ "`grep 'Connected to ' $temp`" -o "`grep 'Connection closed by foreign host.' $temp`" ]
then
echo "$routeur Telnet OK !"
elif [ "`grep 'Connexion enregistree sur le terminal' $temp`" -o "`grep 'Connection to ' $temp`" ]
then
echo "$routeur SSH OK !"
elif [ "$COD_RET" != "0" ]
then
echo "Problème de connexion a l'equipement $routeur !"
echo "$routeur : connection problem" >> $erreur
fi
fi
done
rm -f $temp #[11]
exit
Autres Astuces dans la catégorie Scripts