Commit | Line | Data |
---|---|---|
f5f6d9ac MW |
1 | #! /bin/sh |
2 | ### | |
3 | ### Run everyday health checks on remote systems. | |
4 | ||
5 | set -e | |
0c159fe7 MW |
6 | prog=$0 |
7 | while | |
8 | case "$prog" in */*) ;; *) prog=./$prog ;; esac | |
9 | cd "${prog%/*}" | |
10 | [ -L "${prog##*/}" ] | |
11 | do | |
12 | prog=$(readlink "${prog##*/}") | |
13 | done | |
f5f6d9ac | 14 | |
66015b8c MW |
15 | case $# in 0) set -- $(expand-list /etc/slaves :rcheck_hosts) ;; esac |
16 | ||
b742457e MW |
17 | exec 4>&1 |
18 | rc=0 | |
f5f6d9ac MW |
19 | for host in "$@"; do |
20 | ||
b742457e MW |
21 | nrc=$( |
22 | exec 5>&1 | |
23 | { { { set +e | |
24 | tar czf - check check.d | | |
25 | ssh "$host" ' | |
f5f6d9ac MW |
26 | set -e |
27 | cd /tmp | |
28 | ||
29 | i=0 | |
30 | while :; do | |
31 | tmpdir=check.$$.$i | |
32 | if mkdir -m700 $tmpdir >/dev/null 2>&1; then break; fi | |
33 | case $i in | |
34 | 500) echo >&2 "failed to create temporary directory"; exit 125 ;; | |
35 | esac | |
36 | i=$((i + 1)) | |
37 | done | |
38 | trap "cd /; rm -rf /tmp/$tmpdir" INT TERM QUIT HUP EXIT | |
39 | cd $tmpdir | |
40 | ||
41 | tar xzf - | |
42 | ./check' | |
b742457e MW |
43 | rc=$?; set -e; echo $rc >&5 |
44 | case $rc in | |
45 | 0) ;; | |
46 | *) echo >&2 "remote check process failed (rc = $rc)" ;; | |
47 | esac | |
48 | } 1>&3; } 2>&1 | | |
49 | sed 's/^/!!! /' | |
50 | } 3>&1 | | |
51 | if IFS= read -r line; then | |
52 | cat <<EOF | |
f5f6d9ac MW |
53 | ###-------------------------------------------------------------------------- |
54 | ### $host | |
55 | ||
56 | $line | |
57 | EOF | |
b742457e MW |
58 | cat |
59 | fi >&4 | |
60 | ) | |
61 | if [ $nrc -gt $rc ]; then rc=$nrc; fi | |
f5f6d9ac | 62 | done |
b742457e MW |
63 | |
64 | exit $rc |