DSL-Watchdog mit ISDN-Fallback

Dieses Watchdog-Script ermöglicht ein automatisches Fallback auf die ISDN-Wählleitung, falls der DSL-Zugang (PPPoE) ausfällt. Bei Wiederkehren der DSL-Verbindung wird die ISDN-Verbindung automatisch gekappt.
#!/bin/sh

################################################
#                                              #
# DSL-Watchdog                                 #
#                                              #
# (c) 2004 Leonhard Fellermayr		       #
#                                              #
################################################

while :; do
{

  # DSL running && ISDN running => kill ISDN

  test -e /proc/sys/net/ipv4/conf/ppp0/log_martians && \
	test -e /proc/sys/net/ipv4/conf/ippp0/log_martians &&
  {
    echo -n "Killing ISDN..."
    /sbin/isdnctrl hangup ippp0 >/dev/null 2>&1
    /etc/rc.d/i4l stop >/dev/null 2>&1
    # restore default route that was killed by i4l stop
    GW=`/sbin/ifconfig ppp0 | grep "inet addr" | cut -f3 -d":" | cut -f1 -d" "`
    /sbin/route add default gw $GW
    /etc/fw/firewall ppp0
    echo "`date` - DSL connection restored. Killing ISDN..." >> /var/log/dsl-watchdog.log
    echo "done"
  }

  # DSL not running && ISDN not running => dial ISDN

  test -e /proc/sys/net/ipv4/conf/ppp0/log_martians || \
	test -e /proc/sys/net/ipv4/conf/ippp0/log_martians ||
  {
    echo -n "Dialing ISDN..."
    /etc/rc.d/i4l start >/dev/null 2>&1
    /sbin/isdnctrl dial ippp0 >/dev/null 2>&1
    echo "`date` - No DSL connection! ISDN dial-up triggered." >> /var/log/dsl-watchdog.log
    echo "done"
  }

  sleep 60

};

done