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 MW |
14 | |
15 | for host in "$@"; do | |
16 | ||
17 | { { { set +e | |
18 | tar czf - check check.d | | |
19 | ssh "$host" ' | |
20 | set -e | |
21 | cd /tmp | |
22 | ||
23 | i=0 | |
24 | while :; 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)) | |
31 | done | |
32 | trap "cd /; rm -rf /tmp/$tmpdir" INT TERM QUIT HUP EXIT | |
33 | cd $tmpdir | |
34 | ||
35 | tar 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 | |
51 | EOF | |
52 | cat | |
53 | fi | |
54 | done |