Browse Source

Initial commit

cryobry 5 years ago
commit
ce9910b34b
1 changed files with 51 additions and 0 deletions
  1. 51 0
      wwan-iface-watchdog

+ 51 - 0
wwan-iface-watchdog

@@ -0,0 +1,51 @@
+#!/bin/sh /etc/rc.common
+
+# write wwan-iface-watchdog.sh script
+function write_script() {
+  [ -d /root/scripts ] || mkdir -p /root/scripts
+  if [ ! -e /root/scripts/wwan-iface-watchdog.sh ]; then
+    echo '#!/bin/sh' > /root/scripts/wwan-iface-watchdog.sh
+    echo '' >> /root/scripts/wwan-iface-watchdog.sh
+    echo 'while true; do' >> /root/scripts/wwan-iface-watchdog.sh
+    echo '    tries=0' >> /root/scripts/wwan-iface-watchdog.sh
+    echo '    while [[ $tries -lt 5 ]]; do' >> /root/scripts/wwan-iface-watchdog.sh
+    echo '        /bin/ping -q -c 1 8.8.8.8 && sleep 5 && continue 2' >> /root/scripts/wwan-iface-watchdog.sh
+    echo '        tries=$((tries+1))' >> /root/scripts/wwan-iface-watchdog.sh
+    echo '    done' >> /root/scripts/wwan-iface-watchdog.sh
+    echo '    logger "Interface disconnected, restarting wwan..."' >> /root/scripts/wwan-iface-watchdog.sh
+    echo '    /sbin/ifup wwan' >> /root/scripts/wwan-iface-watchdog.sh
+    echo '    sleep 60' >> /root/scripts/wwan-iface-watchdog.sh
+    echo 'done' >> /root/scripts/wwan-iface-watchdog.sh
+    chmod +x /root/scripts/wwan-iface-watchdog.sh
+  fi
+}
+
+START=99
+PIDDIR=/var/pids
+PIDFILE=/var/pids/wwan-iface-watchdog
+
+# init functions
+start() {
+  logger "Starting wwan iface watchdog"
+  write_script
+  [ -d $PIDDIR ] || mkdir -p $PIDDIR
+  [ -f $PIDFILE ] && exit 1
+  /root/scripts/wwan-iface-watchdog.sh > /dev/null 2>&1 &
+  echo $! > $PIDFILE
+}
+
+stop() {
+  logger "Stopping wwan iface watchdog"
+  kill `cat $PIDFILE`
+  rm $PIDFILE
+}       
+
+restart() {
+  logger "Restarting wwan iface watchdog"
+  kill `cat $PIDFILE`
+  rm $PIDFILE
+  write_script
+  /root/scripts/wwan-iface-watchdog.sh > /dev/null 2>&1 &
+  echo $! > $PIDFILE
+}
+