Changeset 15
- Timestamp:
- 08/28/07 03:08:39 (1 year ago)
- Files:
-
- trunk/imagebuilder/files/bin/keepalive (modified) (2 diffs)
- trunk/imagebuilder/files/www/cgi-bin/webif/status-wwaninfo.sh (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/imagebuilder/files/bin/keepalive
r12 r15 1 1 #!/bin/sh 2 3 # ensure that only one instance of keepalive runs4 trap 'rm -f $lock; exit' TERM EXIT5 6 lock=/var/run/keepalive.pid7 if [ -e $lock ]; then8 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 111 fi12 echo $$ >> $lock13 2 14 3 # variables 15 4 target=$(nvram get wwan_keepalive_ip) 16 peer=$( /sbin/ifconfig ppp0 | grep 'P-t-P:' | cut -d: -f3 | awk '{print $1}')5 peer=$(ifconfig ppp0 | grep 'P-t-P:' | cut -d: -f3 | awk '{print $1}') 17 6 target=${target:-$peer} 18 7 max=$(nvram get wwan_keepalive_maxfail) 19 8 max=${max:-75} 9 log=/tmp/keepalive.log 20 10 21 11 # functions 22 status() {23 packetloss=$(ping -c 10 -q $target | grep 'packet loss' | awk '{ print $7 }' | sed 's/%//') 24 echo "`date '+%H:%M:%S'`: Responding with ${packetloss}% packet loss" >> /tmp/keepalive.log 12 log() { 13 echo "`date '+%A %H:%M:%S'`: $1" >> $log 14 logger -t keepalive "$1" 25 15 } 26 16 27 17 reconnect() { 28 [ "$(cat /proc/diag/led/3g_blue)" = "0" ] && exit 29 echo "`date '+%H:%M:%S'`: Exceeded ${max}% packet loss, reconnecting..." > /tmp/keepalive.log 30 logger -p user.notice -t keepalive "Exceeded ${max}% packet loss, reconnecting..." 18 [ `cat /proc/diag/led/3g_blue` = "0" ] && exit 19 log "Exceeded ${max}% packet loss, reconnecting..." 31 20 ifdown wwan 32 21 ifup wwan & … … 35 24 36 25 # startup 37 echo "`date '+%H:%M:%S'`: Keepalive daemon started, maximum packet loss set to ${max}%" >> /tmp/keepalive.log 38 logger -p user.notice -t keepalive "Keepalive daemon started, maximum packet loss set to ${max}%" 39 echo "Keepalive daemon started, maximum packet loss set to ${max}%" 26 log "Keepalive daemon started, maximum packet loss set to ${max}%" 27 sleep 10 40 28 41 29 # loop 42 while [ "$(cat /proc/diag/led/3g_blue)"= "1" ]; do43 status 30 while [ `cat /proc/diag/led/3g_blue` = "1" ]; do 31 packetloss=`ping -c 10 -q $target | grep 'packet loss' | awk '{ print $7 }' | sed 's/%//'` 44 32 if [ $packetloss -gt $max ]; then 45 33 reconnect trunk/imagebuilder/files/www/cgi-bin/webif/status-wwaninfo.sh
r1 r15 39 39 hidekeepalive="|hidden" 40 40 [ -e /tmp/keepalive.log ] && { 41 for packet_loss in $(cat /tmp/keepalive.log | grep -i 'responding' | cut -d ' ' -f 5 | sed 's/%//')42 do43 sum_packet_loss=$((packet_loss + sum_packet_loss))44 done45 46 num_packet_loss=$(cat /tmp/keepalive.log | grep -i 'responding' | wc -l)47 [ "$num_packet_loss" -ne 0 ] && {48 avg_packet_loss="$((sum_packet_loss / num_packet_loss))%"49 }50 41 hidekeepalive= 51 42 } … … 99 90 100 91 start_form|@TR<<Keepalive>>|FORM_keepalive$hidekeepalive 101 field|@TR<<Average Packet Loss>>102 string|$avg_packet_loss103 92 field| 104 93 string|<div style="width: 100%; height: 150px; overflow: auto; padding: 4px; font-size: 0.8em"><pre>