chiark / gitweb /
74c7f80e65e70562421c2ea77b91e3860a96dcda
[rcheck] / check
1 #! /bin/sh
2 ###
3 ### Run a collection of everyday health checks.
4
5 set -e
6
7 exec 4>&1
8 rc=0
9 for check in check.d/[!#]*[!~]; do
10   nrc=$(
11     exec 5>&1
12     { { { set +e; "$check"; rc=$?; set -e
13           echo $rc >&5
14           case $rc in 0) ;; *) echo >&2 "failed (rc = $rc)" ;; esac
15       } >&3; } 2>&1 |
16       sed 's/^/E: /'
17     } 3>&1 | {
18       if IFS= read -r line; then
19         echo "## ${check##*/}"
20         echo "$line"
21         cat
22         echo
23       fi
24     } >&4
25   )
26   if [ $nrc -gt $rc ]; then rc=$nrc; fi
27 done
28
29 exit $rc