J'essaye d'écrire un script shell pour envoyer un ping à chaque serveur listé dans un fichier spécifié et obtenir sa disponibilité. Le comportement prévu est que si un serveur n'est pas atteint après $ {TIMEOUT} secondes, le script arrête d'essayer de faire un ping sur ce serveur et passe au suivant dans la liste. Cependant, lorsqu'un ping pour un serveur arrive à expiration, le programme s'arrête complètement au lieu de simplement passer au serveur suivant dans la liste. Comment puis-je réparer cela?script shell - la boucle s'arrête lorsque le ping échoue
Voici l'extrait de code correspondant ($ {ALS_HOSTS} est la liste des serveurs à pingué):
while read hostid
do
ping -c ${NUM_PING_PACKETS} ${hostid}
if ping -w ${TIMEOUT} -c ${NUM_PING_PACKETS} ${hostid} | grep ' from' 2>/dev/null 1>&2 # check for output
then
ssh ${hostid} uptime > ${WORKDIR}/${hostid} &
fi
done < ${ALS_HOSTS}
(ce script sera exécuté sur une machine CentOS 5 qui ne peut pas être mis à niveau ou reconfiguré Cette fois-ci)