Changeset 16
- Timestamp:
- 08/29/07 00:54:15 (1 year ago)
- Files:
-
- trunk/imagebuilder/files/bin/keepalive (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/imagebuilder/files/bin/keepalive
r15 r16 1 1 #!/bin/sh 2 3 # ensure that only one instance of keepalive runs 4 trap 'rm -f $lock; exit' TERM EXIT 5 6 lock=/var/run/keepalive.pid 7 if [ -e $lock ]; then 8 logger -p user.notice -t keepalive "Keepalive daemon is already running (PID `cat $lock`)" 9 echo "Keepalive daemon is already running (PID `cat $lock`)" 10 exit 1 11 fi 12 echo $$ >> $lock 2 13 3 14 # variables … … 5 16 peer=$(ifconfig ppp0 | grep 'P-t-P:' | cut -d: -f3 | awk '{print $1}') 6 17 target=${target:-$peer} 7 max=$(nvram get wwan_keepalive_maxfail)8 max=${max:-75}9 log=/tmp/keepalive.log10 18 11 19 # functions 12 log() { 13 echo "`date '+%A %H:%M:%S'`: $1" >> $log 14 logger -t keepalive "$1" 20 status() { 21 status=$(ping -c 1 -q $target | grep 'transmitted' | awk '{ print $4 }') 22 } 23 24 retry() { 25 status 26 if [ ! "$status" = "1" ]; then 27 reconnect 28 fi 15 29 } 16 30 17 31 reconnect() { 18 [ `cat /proc/diag/led/3g_blue` = "0" ] && exit 19 log "Exceeded ${max}% packet loss, reconnecting..."32 echo "`date '+%A %H:%M:%S'`: Reconnect" >> /tmp/keepalive.log 33 logger -t keepalive "Reconnect" 20 34 ifdown wwan 21 35 ifup wwan & … … 24 38 25 39 # startup 26 log "Keepalive daemon started, maximum packet loss set to ${max}%"27 40 sleep 10 28 41 29 42 # loop 30 43 while [ `cat /proc/diag/led/3g_blue` = "1" ]; do 31 packetloss=`ping -c 10 -q $target | grep 'packet loss' | awk '{ print $7 }' | sed 's/%//'` 32 if [ $packetloss -gt $max ]; then 33 reconnect 34 fi 44 status 45 if [ ! "$status" = "1" ]; then 46 retry 47 fi 48 sleep 10 35 49 done 36 37 50 exit