chiark / gitweb /
check.d/{disks,ntp}: Only perform the checks if relevant programs exist.
[rcheck] / rcheck
CommitLineData
f5f6d9ac
MW
1#! /bin/sh
2###
3### Run everyday health checks on remote systems.
4
5set -e
0c159fe7
MW
6prog=$0
7while
8 case "$prog" in */*) ;; *) prog=./$prog ;; esac
9 cd "${prog%/*}"
10 [ -L "${prog##*/}" ]
11do
12 prog=$(readlink "${prog##*/}")
13done
f5f6d9ac
MW
14
15for host in "$@"; do
16
17 { { { set +e
18 tar czf - check check.d |
19 ssh "$host" '
20set -e
21cd /tmp
22
23i=0
24while :; do
25 tmpdir=check.$$.$i
26 if mkdir -m700 $tmpdir >/dev/null 2>&1; then break; fi
27 case $i in
28 500) echo >&2 "failed to create temporary directory"; exit 125 ;;
29 esac
30 i=$((i + 1))
31done
32trap "cd /; rm -rf /tmp/$tmpdir" INT TERM QUIT HUP EXIT
33cd $tmpdir
34
35tar xzf -
36./check'
37 rc=$?; set -e
38 case $rc in
39 0) ;;
40 *) echo >&2 "remote check process failed (rc = $rc)" ;;
41 esac
42 } 1>&3; } 2>&1 |
43 sed 's/^/!!! /'
44 } 3>&1 |
45 if read line; then
46 cat <<EOF
47###--------------------------------------------------------------------------
48### $host
49
50$line
51EOF
52 cat
53 fi
54done