#!/bin/bash
target_ips='8.8.8.8 8.8.4.4'
check_threshold=3
min_uptime=120
last_bootfile=/tmp/.lastautoreboot
function log
{
echo "$(date +'%d.%m.%Y %T') $1"
}
function checktargets
{
for ip in $target_ips;
do
log "Pruefe $ip"
ping -c 1 -w 5 $ip > /dev/null 2>&1
if [[ $? == 0 ]]; then
log "$ip ist erreichbar."
return 0
fi
done
return 1
}
function rebootdev
{
log "Netzwerk ist nach $check_tries Versuchen nicht verfuegbar."
checktargets
if [[ $? != 0 ]]; then
log "Finale Pruefung war auch nicht erfolgreich."
uptimeinmin=$(awk '{print $1}' /proc/uptime)
uptimeinmin=`echo $uptimeinmin / 60 | bc`
log "Uptime in Minuten: $uptimeinmin"
if [[ $uptimeinmin -le $min_uptime ]]; then
log "Reboot wird ausgesetzt, da der letzte Reboot erst $uptimeinmin Minuten her ist.";
exit 0
fi
if [[ ! -f $last_bootfile ]]; then
touch $last_bootfile
log "Netzwerk ist immer noch nicht erreichbar. Reboot wird durchgefuehrt."
/sbin/reboot
fi
fi
}
check_tries=0
while [ $check_tries -lt $check_threshold ];
do
check_tries=$[$check_tries+1]
checktargets
if [[ $? = 0 ]]; then
log "Netzwerk ist erreichbar."
exit 0
else
log "Netzwerk ist down. Versuch $check_tries von $check_threshold."
fi
if [ $check_tries -ge $check_threshold ]; then
rebootdev
fi
done