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