diff --git a/check_inet.sh b/check_inet.sh new file mode 100755 index 0000000..4e255c6 --- /dev/null +++ b/check_inet.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +device=${1:-"ppp0"} + +provider=${2:-"dsl-provider"} + +ptp_addr=`ifconfig $device 2>/dev/null | grep -e "P-[tz]-P" | cut -d":" -f3 | cut -d " " -f1` + +alternate_addr="google.com heise.de debian.org ubuntu.com" + +reconnect() { + ifdown $provider >/dev/null 2> /dev/null + sleep 5 + killall -9 pppd + sleep 2 + ifup $provider >/dev/null 2> /dev/null + sleep 3 + ptp_addr=`ifconfig $device 2>/dev/null | grep -e "P-[tz]-P" | cut -d":" -f3 | cut -d " " -f1` + if [ "X$ptp_addr" == "X" ] ; then + echo "[ Error ]: reconnection host `hostname --long` failed at `date +\"%d.%m.%Y %H:%M:%S\"`" + else + echo "[ `hostname --long`]: reconnected at `date +\"%d.%m.%Y %H:%M:%S\"`" + fi + echo "" + echo "`df`" +} + +if [ "X$ptp_addr" == "X" ] ; then + reconnect +else + ping -c3 $ptp_addr >/dev/null 2> /dev/null + rval=$? + if [ $rval -ne 0 ]; then + for ip_addr in $alternate_addr ; do + ping -c3 $ip_addr >/dev/null 2> /dev/null + if [ $? -eq 0 ]; then + exit 0 + fi + done; + reconnect + fi +fi + +exit 0;