hp (799B)
1 #!/bin/sh -e 2 3 delay=3660 4 5 main() { 6 test -z "$2" && { echo "usage: ${0##*/} url string log"; exit 1; } 7 url="$1" 8 string="$2" 9 log="$3" 10 11 if up 12 then was_up || say 'up' 13 else 14 was_down && has_been_for_long && say 'still down' 15 was_down || say 'down' 16 fi 17 18 } 19 20 up() { 21 ftp -MVo - "$url" 2>/dev/null| grep -Eq "$string" 22 } 23 24 was_up() { 25 test -f "$log" && 26 tail -n 1 "$log" | 27 grep -qE 'up$' 28 } 29 30 was_down() { 31 test -f "$log" && 32 tail -n 1 "$log" | 33 grep -qE 'down$' 34 } 35 36 has_been_for_long() { 37 last=$(tail -n 1 "$log" | cut -f1 -d' ') 38 now=$(date +%s) 39 test "$((now - last))" -gt $delay 40 } 41 42 say() { 43 test -f "$log" && 44 tail -n 1 "$log" >&2 45 message "$1" >&2 46 log "$1" 47 } 48 49 log() { 50 message "$1" >> "$log" 51 exit 0 52 } 53 54 message() { 55 printf '%s %s is %s\n' "$(date '+%s %F %T' )" "$url" "$1" 56 } 57 58 main "$@"