Comment faire pour utiliser la commande ping valeur de retour pour déclencher une commande bash
Je suis en train de faire mon client openvpn redémarrer si elle n'est pas en mesure d'exécuter la commande ping destination 4.2.2.2 toutes les 60 secondes, si c'est pour ne rien faire. Voici ce que j'ai. Je veux être en permanence en cours d'exécution aussi.Je suis en cours d'exécution sur ce Alpine Linux. Toute aide est grandement appréciée.
#!/bin/sh
#This is a script to continuously do 5 pings to 4.2.2.2
#every 60 seconds to keep the tunnel up if pings fail,
#then it will restart the openvpn process. And record the
#time it failed.
PING=ping -w 5 4.2.2.2
exec &> /var/log/ping_SLA
while true
do
if
#ping returns a fail value
[ $PING -eq 0 ];
sleep 60s
then
#Execute commands
date > /var/log/ping_SLA_Fail
rc-service openvpn stop
killall -9 openvpn
rc-service openvpn start
sleep 30s
else
# colon is a null and is required
:
fi
done
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas familier avec tout
-w
option avec la commande ping.Utiliser le
-c
option avec votre commande ping pour déterminer le nombre de requêtes d'écho ICMP à envoyer.Quelque chose comme cela devrait fonctionner:
homme ping:
Arrêter après l'envoi de compter ECHO_REQUEST paquets. La date limite d'option, ping attend pour le comte ECHO_REPLY paquets, jusqu'à l'expiration de ce délai.
Spécifie le nombre d'octets de données à envoyer. La valeur par défaut est de 56, ce qui se traduit par 64 ICMP octets de données lorsqu'il est combiné avec les 8 octets de données d'en-tête ICMP.
Spécifier un délai d'attente, en secondes, avant de ping sorties indépendamment de combien de paquets ont été envoyés ou reçus. Dans ce cas, le ping ne s'arrête pas après le compte paquets sont envoyés, il attend, soit pour la date limite d'expiration ou jusqu'à ce que le comte de sondes de réponse ou pour une notification d'erreur de réseau.
Le temps d'attendre une réponse, en quelques secondes. L'option n'affecte que les temps d'attente en absense de toutes les réponses, sinon ping attend deux Rtt.
Nous avons donc:
Vous devez exécuter le
ping
commande, puis de tester sa valeur de sortie: