2010-06-19 29 views
0

Chaque nuit, je passe par le même processus de vérification des systèmes de basculement pour nos T1. Je passe essentiellement par le processus suivant:Continuer à grep pour le résultat traceroute avec bash

Démarrez le processus de basculement. Une fois que je vois qu'il a échoué, je vérifie que les connexions fonctionnent par SSHing dans un serveur.

ssh $server; 

Ensuite, une fois que je vois cela fonctionne, je l'enlève du basculement.

Donc ce que je veux faire est de continuellement courir un traceroute jusqu'à ce que j'obtienne un certain résultat, puis exécutez une commande SSH.

Répondre

1

Mettez votre liste de messages réussis dans un fichier (omettre les lignes variables et des fractions de la ligne, et utiliser un^pour identifier le début de la ligne, en tant que telle :)

patterns.list:

^ 7 4.68.63.165 
^ 8 4.68.17.133 
^ 9 4.79.168.210 
^10 216.239.48.108 
^11 66.249.94.46 
^12 72.14.204.99 

Puis simple en boucle:

while ! traceroute -n ${TARGET} | grep -f patterns.list 
do 
    sleep 5 # 5 second delay between traceroutes, for niceness. 
done 
ssh ${DESTINATION} 

Utilisez traceroute -n pour générer la sortie de sorte que vous ne recevez pas une adresse IP qui résout un instant, mais un nom suivant, resulti ng dans un faux positif.

1

Je pense que vous pourriez être mieux d'utiliser la commande ping pour vérifier l'accessibilité du serveur que traceroute.

Il est facile de vérifier l'état de retour de commande ping sans utiliser grep du tout:

if [ ping -c 4 -n -q 10.10.10.10 >/dev/null 2>& ]; then 
    echo "Server is ok" 
else 
    echo "Server is down" 
fi 

Si vous voulez le faire sans cesse dans une boucle, essayez ceci:

function check_ssh { 
    # do your ssh stuff here 
    echo "performing ssh test" 
} 
while : ; do 
    if [ ping -c 4 -n -q 10.10.10.10 >/dev/null 2>& ]; then 
     echo "Server is ok" 
     check_ssh 
    else 
     echo "Server is down" 
    fi 
    sleep 60 
done 
+0

Le raison pour laquelle je n'utiliserais probablement pas un ping serait parce que ce système de basculement est assez bon, et il y a généralement seulement quelques secondes avant qu'il ne se déclenche. Le traceroute est pour moi de voir que c'est sur la route de basculement. Merci quand même :) – PsychoKlown