set -e
+exec 4>&1
+rc=0
for check in check.d/[!#]*[!~]; do
- { { { set +e; "$check"; rc=$?; set -e
- case $rc in 0) ;; *) echo >&2 "failed (rc = $rc)" ;; esac
- } >&3; } 2>&1 |
- sed 's/^/E: /'
- } 3>&1 | {
- if read line; then
- echo "## ${check##*/}"
- echo "$line"
- cat
- echo
- 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
prog=$(readlink "${prog##*/}")
done
+exec 4>&1
+rc=0
for host in "$@"; do
- { { { set +e
- tar czf - check check.d |
- ssh "$host" '
+ nrc=$(
+ exec 5>&1
+ { { { set +e
+ tar czf - check check.d |
+ ssh "$host" '
set -e
cd /tmp
tar xzf -
./check'
- rc=$?; set -e
- case $rc in
- 0) ;;
- *) echo >&2 "remote check process failed (rc = $rc)" ;;
- esac
- } 1>&3; } 2>&1 |
- sed 's/^/!!! /'
- } 3>&1 |
- if read line; then
- cat <<EOF
+ rc=$?; set -e; echo $rc >&5
+ case $rc in
+ 0) ;;
+ *) echo >&2 "remote check process failed (rc = $rc)" ;;
+ esac
+ } 1>&3; } 2>&1 |
+ sed 's/^/!!! /'
+ } 3>&1 |
+ if IFS= read -r line; then
+ cat <<EOF
###--------------------------------------------------------------------------
### $host
$line
EOF
- cat
- fi
+ cat
+ fi >&4
+ )
+ if [ $nrc -gt $rc ]; then rc=$nrc; fi
done
+
+exit $rc