Datei /root/scripts/monitorssh.sh
mit folgendem Inhalt erstellen:
#!/bin/sh # Stellt sicher, dass sshd immer wieder gestartet wird. if [ $(ps -A | grep -c sshd) = 0 ]; then /etc/init.d/sshd start fi
crontab –e
starten und Eintrag machen:
*/5 * * * * /root/scripts/monitorssh.sh
Selbstheilungsdatei mit 3 Startversuchen, danach Serverneustart:
#!/bin/bash #selfhealing.sh #Selbstheilungversuch eines Dienstes #wenn der Dienst nicht mehr reagiert, dann wird der Dienst 3mal mit zunehmender Verzögerung von 1 Minute neu gestartet. #wenn das nicht klappt, dann wird der Server neu gestartet. #wiederkehrender Aufruf per cron, nagios oder prtg dae=postfix #Verzögerung verz=60 ####################### function watchprc() { #echo "in watchprc" service $dae status 2>&1 1>/dev/null f=$? if [ $f -eq 0 ]; then exit 0 else return $f fi } ####################### function startprc() { #echo "in startprc" service $dae start 2>&1 2>/dev/null watchprc echo $verz Verzögerung, danach erneuter Versuch $dae zu starten... sleep $verz } ####################### ###Einsprung watchprc #versuche den Dienst 3mal mit wachsender Verzögerung #zu starten, dann starte den Server neu for i in `seq 1 3` do startprc $verz #jeden Versuch um 60s mehr verzögern let "verz +=60" done if [ ! $f -eq 0 ]; then echo "$0: dienst $dae konnte auf $HOSTNAME nicht gestartet werden,versuche reboot ...!!!" logger "$0: dienst $dae konnte auf $HOSTNAME nicht gestartet werden, versuche reboot ...!!!" # echo "$0 konnte $dae auf $HOSTNAME nicht starten, deshalb reboot ..." | mail admin@mydom.ain -s rebootversuch reboot fi