#!/bin/bash # selfhealing.sh / richard / 2019 # Script für prtg zur Überwachung und Neustart von Diensten in linux # bei Fehlern wird einmal versucht dene Dienst neu zustarten, # schlägt das fehl, wird der host neu gestartet # muss auf zielhost in Verzeichnis /var/prtg/scriptsxml/ liegen, # damit es ausgewertet wird. # rootrechte erforderlich reboot=0 lck="/tmp/selfhealing.lock" ########################### # Array der zu überwachenden Dienste array=( atd cron ntpd cups sshd ) ########################### # Dienst prüfen function watchprc() { service $1 status 2>&1 1>/dev/null if [ $? -ne 0 ]; then startprc $1 else echo -n 0 return 0 fi } ########################### # Dienst starten function startprc() { if [ -e $lck ];then service $1 start 2>&1 2>/dev/null if [ $? -ne 0 ];then reboot=1 echo -n 3 fi else service $1 start 2>&1 2>/dev/null echo -n 2 touch $lck 2>&1 2>/dev/null fi } ########################### echo -n "" for i in "${array[@]}" do echo -e "\n Service: $i \c" watchprc $i echo -n " mydom.dienste.state Custom " done # wenn dienst nicht gestartet werden konnte, neustart des hosts if [ $reboot -ne 0 ];then echo "Dienst konnte wiederholt nicht gestartet werden. REBOOT ..." rm $lck 2>&1 2>/dev/null echo -e "\n" reboot fi # echo -e "\n" exit