source:
MondoRescue/branches/3.3/mindi-busybox/examples/var_service/dhcp_if_pinger/run
| Last change on this file was 3621, checked in by , 9 years ago | |
|---|---|
|
|
| File size: 1.1 KB | |
| Line | |
|---|---|
| 1 | #!/bin/sh |
| 2 | |
| 3 | # How often to test, seconds |
| 4 | ping_time=67 |
| 5 | # "One ping, must have reply in 1 sec" |
| 6 | ping_opts="-c1 -W1 -w1" |
| 7 | # If ping failed, how soon to retry |
| 8 | retry_time=5 |
| 9 | # Reinit after this many consecutive ping error |
| 10 | max_fail=5 |
| 11 | # Interface whose DHCP data to use |
| 12 | if=${PWD##*/dhcp_} |
| 13 | if=${if%%_pinger} |
| 14 | |
| 15 | msg() { |
| 16 | echo "`date '+%Y-%m-%d %H:%M:%S'` $*" >>"$0.log" |
| 17 | } |
| 18 | |
| 19 | if test -f "$0.log"; then |
| 20 | tail -999 "$0.log" >"$0.log.new" |
| 21 | mv "$0.log.new" "$0.log" |
| 22 | fi |
| 23 | |
| 24 | test -f "/var/service/dhcp_$if/env.out" || exec env - sleep "$ping_time" |
| 25 | |
| 26 | . "/var/service/dhcp_$if/env.out" |
| 27 | test x"$router" != x"" || exec env - sleep "$ping_time" |
| 28 | |
| 29 | #msg "Pinging $router" |
| 30 | failcnt=0 |
| 31 | while true; do |
| 32 | ping $ping_opts "$router" && exec env - sleep "$ping_time" |
| 33 | : $((failcnt++)) |
| 34 | msg "Failed to ping $router, fail count:$failcnt" |
| 35 | test $failcnt -ge $max_fail && break |
| 36 | env - sleep "$retry_time" |
| 37 | done |
| 38 | |
| 39 | test -d "/var/service/dhcp_$if" && { |
| 40 | msg "Restarting /var/service/dhcp_$if" |
| 41 | sv t "/var/service/dhcp_$if" |
| 42 | } |
| 43 | test -d "/var/service/supplicant_$if" && { |
| 44 | msg "Restarting /var/service/supplicant_$if" |
| 45 | sv t "/var/service/supplicant_$if" |
| 46 | } |
| 47 | exec env - sleep "$ping_time" |
Note:
See TracBrowser
for help on using the repository browser.
