Je veux écrire un script qui vérifierait en permanence si l’un des périphériques du réseau, qui devrait être en ligne toute la journée, est réellement en ligne. J’ai essayé d’utiliser ping, mais donne 1 peu importe que j’entre une adresse IP valide ou invalide. Comment puis-je vérifier si une adresse spécifique (ou mieux n’importe quel liste des adresses IP) a été mise hors ligne ?
if [ "`ping -c 1 adresses_ip`" ]
then
echo 1
else
echo 0
fi
Vous n’avez pas besoin des crochets dans l’instruction if. Vous pouvez utiliser cette commande
if ping -c 1 adresses_ip &> /dev/null
then
echo "success"
else
echo "error"
fi
La commande if vérifie le code de sortie de la commande (ping). Si le code de sortie est égal à zéro (ce qui signifie que la commande s’est terminée avec succès), le bloc then est exécuté. S’il renvoie un code de sortie non nul, le bloc else est exécuté.
Il existe une version avancée de ping - « fping », qui permet de définir le délai d’attente en millisecondes.
#!/bin/bash
IP='192.168.1.1'
fping -c1 -t300 $IP 2>/dev/null 1>/dev/null
if [ "$?" = 0 ]
then
echo "L’hôte est accessible"
else
echo "L’hôte est inaccessible"
fi