Créer un serveur de monitoring – partie 3 script bash ping

Script qui va exécuter un ping, c’est à dire une requête ICMP Echo du serveur de monitoring à un autre serveur pour tester si cet ordinateur hôte est accessible par le réseau :

Ajouter le script dans votre serveur de monitoring :

Shell

cd /home/scripts
touch monit_ping.sh
vi monit_ping.sh

Description : ce script va effectuer un ping sur l’ensemble des machines mentionnés dans la variable IPS. S’il y a une erreur (absence de paquet en retour sur les COUNT tentatives), un mail est envoyé à EMAIL pour lui annoncer que le serveur ne répond plus …
Ajouter le contenu suivant :

Fichier monit_ping.sh

# add ip / hostname separated by white space
IPS="XX.XX.XX.XX" # à remplacer par l'IP de la machine à monitorer
# no ping request
COUNT=4

# email report when
SUBJECT="Echec de ping"
EMAIL="example@webdevpro.net" # à remplacer par votre email
for IP in $IPS
do
  count=$(ping -c $COUNT $IP | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
  if [ $count -eq 0 ]; then
    # rien reçu les COUNT fois
    echo "Serveur Down : $IP ne repond plus aux ping (ping failed) à $(date)" | mail -s "Serveur Down" $EMAIL
  fi
done

Rendre le fichier exécutable et l’exécuter :

Shell

chmod 700 monit_ping.sh
./monit_ping.sh

Normalement, rien ne doit se passer : pas de mail reçu et pas de message dans le prompt 🙂

Mettre en place ce script dans les cronjob pour qu’il soit exécuté toutes les 15 minutes :

Shell

crontab -e

Ajouter à la fin du fichier :

Fichier cron

*/15    *       *       *       *       /home/scripts/monit_ping.sh >/dev/null 2>&1

Vérifier que tout marche :

Sur la machine monitorée, mettre en place un règle iptable, temporaire, qui va bloquer le ping :

Shell

iptables -A INPUT -s XX.XX.XX.XX -j DROP # remplacer par l'IP de la machine de monitoring

Supprimer la règle iptable :

Shell

iptables -L -n -v
iptables -D INPUT numero_ligne