Changeset 24909


Ignore:
Timestamp:
2011-01-05T16:33:39+01:00 (6 years ago)
Author:
nunojpg
Message:

[packages] watchcat: update to release 5

Location:
packages/utils/watchcat
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • packages/utils/watchcat/Makefile

    r24902 r24909  
    1010PKG_NAME:=watchcat 
    1111PKG_VERSION:=1 
    12 PKG_RELEASE:=3 
     12PKG_RELEASE:=5 
    1313 
    1414include $(INCLUDE_DIR)/package.mk 
  • packages/utils/watchcat/files/initd_watchcat

    r24903 r24909  
    2828        config_get mode         $1 mode         "allways" 
    2929        config_get pinghosts    $1 pinghosts    "8.8.8.8" 
    30         config_get pingperiod   $1 pingperiod   "600" 
     30        config_get pingperiod   $1 pingperiod 
    3131        config_get forcedelay   $1 forcedelay   "0" 
    3232 
     
    3636        period="$seconds" 
    3737        [ "$period" -ge 1 ] \ 
    38                 || append_string "error" "period is not set or not recognized" "; " 
     38                || append_string "error" 'period is not a valid time value (ex: "30"; "4m"; "6h"; "2d")' "; " 
    3939        [ "$mode" = "allways" -o "$mode" = "ping" ] \ 
    4040                || append_string "error" "mode must be 'allways' or 'ping'" "; " 
    4141        [ -n "$pinghosts" -o "$mode" = "allways" ] \ 
    42                 || append_string "error" "pinghosts must be set in 'ping' mode" "; " 
    43         timetoseconds "$pingperiod" 
    44         pingperiod="$seconds" 
     42                || append_string "error" "pinghosts must be set when in 'ping' mode" "; " 
     43        [ "$mode" = "ping" ] && { 
     44                if [ -n "$pingperiod" ] 
     45                then 
     46                        timetoseconds "$pingperiod" 
     47                        pingperiod="$seconds" 
     48                        if [ "$pingperiod" -ge 0 ] 
     49                        then 
     50                                [ "$pingperiod" -le "$period" ] \ 
     51                                        || append_string "error" "pingperiod must be less than period" "; " 
     52                        else 
     53                                append_string "error" 'pingperiod is not a valid time value (ex: "30"; "4m"; "6h"; "2d")' "; " 
     54                        fi 
     55                else 
     56                        pingperiod="$((period/20))" 
     57                fi 
     58        } 
    4559        [ "$pingperiod" -lt "$period" -o "$mode" = "allways" ] \ 
    4660                || append_string "error" "pingperiod is not recognized" "; " 
     
    5670        else 
    5771                /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)"  
     72                logger -p user.info -t "wathchat" "started task (mode=$mode;period=$period;pinghosts=$pinghosts;pingperiod=$pingperiod;forcedelay=$forcedelay)"  
    5973        fi 
    6074 
     
    88102                logger -p user.info -t "watchcat" "starting all tasks" 
    89103                config_foreach load_watchcat watchcat 
    90                 logger -p user.info -t "watchcat" "all tasks started"    
     104                logger -p user.info -t "watchcat" "all tasks started" 
    91105        else 
    92106                logger -p user.info -t "watchcat" "no tasks defined" 
  • packages/utils/watchcat/files/uci_defaults_watchcat

    r24692 r24909  
    11#!/bin/sh 
    2 uci add system watchcat 
    3 uci set system.@watchcat[0].period=6h 
    4 uci set system.@watchcat[0].mode=ping 
    5 uci set system.@watchcat[0].pinghosts=8.8.8.8 
    6 uci set system.@watchcat[0].forcedelay=30 
    7 uci commit 
     2 
     3[ -n "$(uci -q show system.@watchcat[0])" ] || { 
     4        uci add system watchcat 
     5        uci set system.@watchcat[0].period=6h 
     6        uci set system.@watchcat[0].mode=ping 
     7        uci set system.@watchcat[0].pinghosts=8.8.8.8 
     8        uci set system.@watchcat[0].forcedelay=30 
     9        uci commit 
     10} 
  • packages/utils/watchcat/files/watchcat.sh

    r24844 r24909  
    77 
    88        reboot & 
    9          
     9 
    1010        [ "$forcedelay" -ge 1 ] && { 
    1111                sleep "$forcedelay" 
     
    1616 
    1717watchcat_allways() { 
    18         local period="$1"; local forcedelay="$2"  
    19          
     18        local period="$1"; local forcedelay="$2" 
     19 
    2020        sleep "$period" && shutdown_now "$forcedelay" 
    2121} 
     
    2323watchcat_ping() { 
    2424        local period="$1"; local forcedelay="$2"; local pinghosts="$3"; local pingperiod="$4" 
    25          
     25 
    2626        time_now="$(cat /proc/uptime)" 
    2727        time_now="${time_now%%.*}" 
    28         time_last="$time_now" 
     28        time_lastcheck="$time_now" 
     29        time_lastcheck_withinternet="$time_now" 
    2930 
    3031        while true 
    3132        do 
    32                 sleep "$pingperiod" 
    33          
     33                # account for the time ping took to return. With a ping time of 5s, ping might take more than that, so it is important to avoid even more delay. 
    3434                time_now="$(cat /proc/uptime)" 
    3535                time_now="${time_now%%.*}" 
    36                  
    37                 for host in "$pinghosts"  
     36                time_diff="$((time_now-time_lastcheck))" 
     37 
     38                [ "$time_diff" -lt "$pingperiod" ] && { 
     39                        sleep_time="$((pingperiod-time_diff))" 
     40                        sleep "$sleep_time" 
     41                } 
     42 
     43                time_now="$(cat /proc/uptime)" 
     44                time_now="${time_now%%.*}" 
     45                time_lastcheck="$time_now" 
     46 
     47                for host in "$pinghosts" 
    3848                do 
    3949                        if ping -c 1 "$host" &> /dev/null  
    4050                        then  
    41                                 time_last="$time_now" 
     51                                time_lastcheck_withinternet="$time_now" 
    4252                        else 
    43                                 time_diff="$((time_now-time_last))" 
    44                                 logger -p daemon.info -t "watchcat[$$]" "no internet connectivity for $time_diff seconds. Reseting when reaching $period"        
     53                                time_diff="$((time_now-time_lastcheck_withinternet))" 
     54                                logger -p daemon.info -t "watchcat[$$]" "no internet connectivity for $time_diff seconds. Reseting when reaching $period"        
    4555                        fi 
    4656                done 
    4757 
    48                 time_diff="$((time_now-time_last))" 
     58                time_diff="$((time_now-time_lastcheck_withinternet))" 
    4959                [ "$time_diff" -ge "$period" ] && shutdown_now "$forcedelay" 
    50          
     60 
    5161        done 
    5262} 
Note: See TracChangeset for help on using the changeset viewer.