Ignore:
Timestamp:
2010-12-23T00:14:56+01:00 (5 years ago)
Author:
nunojpg
Message:

[packages] watchcat: bug fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • packages/utils/watchcat/files/initd_watchcat

    r24692 r24808  
    66 
    77append_string() { 
    8         local varname="$1"; local actual="${!varname}"; local add="$2"; local separator="${3:- }" 
     8        local varname="$1"; local add="$2"; local separator="${3:- }"; local actual 
     9        eval "actual=\$$varname" 
     10 
    911        new="${actual:+$actual$separator}$add" 
    1012        eval "$varname=\$new" 
    1113} 
    12  
    13 shutdown_now() { 
    14         local forcedelay="$1" 
    15  
    16         reboot & 
    17          
    18         [ "$forcedelay" -ge 1 ] && { 
    19                 sleep $forcedelay 
    20  
    21                 echo b > /proc/sysrq-trigger # Will immediately reboot the system without syncing or unmounting your disks. 
    22         } 
    23 } 
    24  
    25 watchcat_allways() { 
    26         local period="$1"; local forcedelay="$2"  
    27          
    28         sleep $period && shutdown_now "$forcedelay" 
    29 } 
    30  
    31 watchcat_ping() { 
    32         local period="$1"; local forcedelay="$2"; local pinghosts="$3"; local pingperiod="$4" 
    33          
    34         time=$(cat /proc/uptime) && time=${time%%.*} 
    35         last=$time 
    36  
    37         while true 
    38         do 
    39                 sleep $pingperiod 
    40          
    41                 time=$(cat /proc/uptime) && time=${time%%.*} 
    42                  
    43                 for host in "$pinghosts"  
    44                 do 
    45                         if ping -c 1 "$host" &> /dev/null  
    46                         then  
    47                                 last=$time 
    48                         else 
    49                                 diff=$((time-last)) 
    50                                 logger -p daemon.info -t "watchcat[$$]" "no internet connectivity for $diff seconds. Reseting when reaching $period"     
    51                         fi 
    52                 done 
    53  
    54                 diff=$((time-last)) 
    55                 [ $diff -ge $period ] && shutdown_now "$forcedelay" 
    56          
    57         done 
    58 }  
    5914 
    6015timetoseconds() { 
     
    8035        timetoseconds "$period" 
    8136        period="$seconds" 
    82         [ "$period" -ge 1 ] \ 
     37        [ "$period" -ge 1 ] \ 
    8338                || append_string "error" "period is not set or not recognized" "; " 
    84         [ "$mode" = "allways" -o "$mode" = "ping" ] \ 
     39        [ "$mode" = "allways" -o "$mode" = "ping" ] \ 
    8540                || append_string "error" "mode must be 'allways' or 'ping'" "; " 
    86         [ -n "$pinghosts" -o "$mode" = "allways" ] \ 
     41        [ -n "$pinghosts" -o "$mode" = "allways" ] \ 
    8742                || append_string "error" "pinghosts must be set in 'ping' mode" "; " 
    8843        timetoseconds "$pingperiod" 
    8944        pingperiod="$seconds" 
    90         [ "$pingperiod" -l "$period" -o "$mode" = "allways" ] \ 
     45        [ "$pingperiod" -lt "$period" -o "$mode" = "allways" ] \ 
    9146                || append_string "error" "pingperiod is not recognized" "; " 
    9247        [ "$forcedelay" -ge 0 ] \ 
     
    9752        if [ "$mode" = "allways" ] 
    9853        then 
    99                 watchcat_allways "$period" "$forcedelay" & 
     54                /usr/bin/watchcat.sh "allways" "$period" "$forcedelay" & 
     55                logger -p user.info -t "wathchat" "started task (mode=$mode;period=$period;forcedelay=$forcedelay)"  
    10056        else 
    101                 watchcat_ping "$period" "$forcedelay" "$pinghosts" "$pingperiod" & 
     57                /usr/bin/watchcat.sh "period" "$period" "$forcedelay" "$pinghosts" "$pingperiod" & 
     58                logger -p user.info -t "wathchat" "started task (mode=$mode;pinghosts=$pinghosts;pingperiod=$pingperiod;forcedelay=$forcedelay)"  
    10259        fi 
    10360 
    104         echo $! >> "$PIDFILE".pids 
    105          
    106         logger -p user.info -t "sshtunnel" "started tunnels to $server (pid=$!;retrydelay=$retrydelay)"  
     61        echo $! >> "${PIDFILE}.pids" 
    10762} 
    10863 
    10964stop() { 
    110         if [ -f "$PIDFILE".pids ] 
    111         then 
    112                 logger -p user.info -t "watchcat" "stopping all reboot programs" 
    113                  
    114                 while read pid 
    115                 do 
    116                         kill $pid 
    117                 done < "$PIDFILE".pids 
     65        if [ -f "${PIDFILE}.pids" ] 
     66        then 
     67                logger -p user.info -t "watchcat" "stopping all tasks" 
    11868 
    119                 rm "$PIDFILE".pids 
     69                while read pid 
     70                do 
     71                        kill "$pid" 
     72                done < "${PIDFILE}.pids" 
    12073 
    121                 logger -p user.info -t "watchcat" "all reboot programs stopped" 
    122         else 
    123                 logger -p user.info -t "watchcat" "no reboot programs running" 
    124         fi 
     74                rm "${PIDFILE}.pids" 
     75 
     76                logger -p user.info -t "watchcat" "all tasks stopped" 
     77        else 
     78                logger -p user.info -t "watchcat" "no tasks running" 
     79        fi 
    12580} 
    12681 
    12782start() { 
    128         [ -f "$PIDFILE".pids ] && stop 
    129          
     83        [ -f "${PIDFILE}.pids" ] && stop 
     84 
    13085        config_load system 
    13186        if [ -n "$(uci show system.@watchcat[0])" ] # at least one watchcat section exists 
    132         then         
    133                 logger -p user.info -t "watchcat" "starting all reboot programs" 
     87        then 
     88                logger -p user.info -t "watchcat" "starting all tasks" 
    13489                config_foreach load_watchcat watchcat 
    135                 logger -p user.info -t "watchcat" "all reboot programs started"  
     90                logger -p user.info -t "watchcat" "all tasks started"    
    13691        else 
    137                 logger -p user.info -t "watchcat" "no reboot programs defined" 
     92                logger -p user.info -t "watchcat" "no tasks defined" 
    13893        fi 
    13994} 
Note: See TracChangeset for help on using the changeset viewer.