#!/bin/bash SERVICE=$1 DATE=$(date) CORPS="Alerte serveur XXXX.YY" SUJET_UP="$DATE: Service $1 actif" SUJET_DOWN="$DATE : Service $1 down" SUJET_UP_2="$DATE: Service $1 redémarré" SUJET_DOWN_2="$DATE : Service $1 toujours mort. Redémarrage serveur" DESTINATAIRE="adresse1@XXXX.YY, adresse2@ZZZZ.WW" ADMIN="$DATE : Une tâche d'admin est en cours, on quitte." if (/usr/bin/ps -C apt-get,dpkg,apt,aptitude,yunohost >/dev/null); then # Un processus d'admin est en cours, on quitte echo "$ADMIN" >> "/var/log/etat_service_$SERVICE" exit 1 else # Sinon, on teste if (systemctl is-active --quiet "$SERVICE"); then exit 1 # Le serice est actif, on passe # echo -e $SUJET_UP # echo "$SUJET_UP" >> "/var/log/etat_service_$SERVICE" # mail DEBUG # echo "$CORPS" | mail -s "$SUJET_UP" "$DESTINATAIRE" else # Le service est planté, on inscrit dans le log # echo -e $SUJET_DOWN # echo "$SUJET_DOWN" >> "/var/log/etat_service_$SERVICE" # On envoie mail alerte service down echo "$CORPS" | mail -s "$SUJET_DOWN" "$DESTINATAIRE" # On tente de redémarrer le service /usr/bin/systemctl restart "$SERVICE".service 2> /dev/null # On attend 10 secondes avant nouvel essai sleep 10 # On resteste voir si le service a bien été redémarré, sinon on reboote if (systemctl is-active --quiet "$SERVICE"); then # Le service a bien redémarré, on l'inscrit dans les logs # echo -e $SUJET_UP_2 echo "$SUJET_UP_2" >> "/var/log/etat_service_$SERVICE" # mail DEBUG echo "$CORPS" | mail -s "$SUJET_UP_2" "$DESTINATAIRE" else # Le service est toujours planté, on inscrit le reboot du serveur dans les logs # echo -e $SUJET_DOWN_2 echo "$SUJET_DOWN_2" >> "/var/log/etat_service_$SERVICE" # mail alerte du reboot du serveur echo "$CORPS" | mail -s "$SUJET_DOWN_2" "$DESTINATAIRE" # On attend 5 secondes et on redémarre le serveur sleep 5 /usr/sbin/reboot fi fi fi