Skip to content

Instantly share code, notes, and snippets.

@sharkoz
Created September 16, 2025 13:51
Show Gist options
  • Select an option

  • Save sharkoz/52a44eac5c5e213a74d9c99e1bfcd117 to your computer and use it in GitHub Desktop.

Select an option

Save sharkoz/52a44eac5c5e213a74d9c99e1bfcd117 to your computer and use it in GitHub Desktop.
netcheck.sh
#!/bin/sh
# --- CONFIGURATION ---
# L'adresse IP de la passerelle à vérifier.
GATEWAY_IP="192.168.2.1"
# Le nombre d'échecs de ping consécutifs avant de déclencher un redémarrage.
MAX_FAILURES=5
# Le temps d'attente en secondes entre chaque vérification.
CHECK_INTERVAL=15
# --- SCRIPT ---
failure_count=0
# Chemin vers le fichier de log.
LOG_FILE="./netcheck.log"
# --- SCRIPT ---
# Fonction pour écrire un message horodaté dans le fichier de log.
log() {
# Format de la date : Année-Mois-Jour Heure:Minute:Seconde
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
log "Lancement du script de surveillance de la connectivité..."
while true; do
# Tente de pinger la passerelle.
# -c 1: Envoie un seul paquet.
# -W 3: Attend une réponse pendant 3 secondes.
# La sortie est redirigée vers /dev/null pour ne pas polluer les logs.
if ping -c 1 -W 3 "$GATEWAY_IP" > /dev/null 2>&1; then
# Le ping a réussi, la connexion est active.
if [ $failure_count -gt 0 ]; then
log "Connexion à $GATEWAY_IP rétablie."
fi
failure_count=0
else
# Le ping a échoué.
failure_count=$((failure_count + 1))
log "Échec de la connexion à $GATEWAY_IP (Échec n°$failure_count sur $MAX_FAILURES)."
fi
# Vérifie si le nombre maximal d'échecs a été atteint.
if [ $failure_count -ge $MAX_FAILURES ]; then
log "Seuil d'échecs atteint. Redémarrage du système imminent."
# Exécute la commande de redémarrage.
reboot
# Termine le script au cas où la commande reboot échouerait.
exit 1
fi
# Attend avant la prochaine vérification.
sleep $CHECK_INTERVAL
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment