#! /bin/sh ### ### Run a collection of everyday health checks. set -e fix () { n=$1 while :; do case $n in 0) break ;; 0*) n=${n#0} ;; *) break ;; esac done echo $n } min=$(fix ${1-0}) max=$(fix ${2-99}) exec 4>&1 rc=0 for check in check.d/[!#]*[!~]; do base=${check##*/} seq=${base%%[!0-9]*} if [ $min -gt $seq -o $seq -gt $max ]; then continue; fi nrc=$( exec 5>&1 { { { set +e; "$check"; rc=$?; set -e echo $rc >&5 case $rc in 0) ;; *) echo >&2 "failed (rc = $rc)" ;; esac } >&3; } 2>&1 | sed 's/^/E: /' } 3>&1 | { if IFS= read -r line; then echo "## ${check##*/}" echo "$line" cat echo fi } >&4 ) if [ $nrc -gt $rc ]; then rc=$nrc; fi done exit $rc