PRTG

selfhealing.sh
#!/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 "<prtg>"
 
for i in "${array[@]}"
do
echo -e "\n    <result>
	<channel>Service: $i</channel>
	<value>\c"
watchprc $i
echo -n "</value>
	<ValueLookup>cae.dienste.state</ValueLookup>
	<unit>Custom</unit>
    </result>"
done
# wenn dienst nicht gestartet werden konnte, neustart des hosts
if [ $reboot -ne 0 ];then
	echo "<text>Dienst konnte wiederholt nicht gestartet werden. REBOOT ...</text>"
        rm $lck 2>&1 2>/dev/null
        echo -e "\n</prtg>"
        reboot
fi
#
	echo -e "\n</prtg>"
exit