|
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>mydom.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
|
|