$script_dir/install-my-scripts
cd /usr/local
+ecode=0
+failed_hosts=()
+
+# exit code run
+er() {
+ local ret=0
+ "$@" || ret=$?
+ if (( ret )); then
+ echo "$0: failed command: $*"
+ failed_hosts+=($tg)
+ fi
+ if (( ret > ecode )); then
+ ecode=$ret
+ fi
+}
for tg; do
rsynctg=$tg
if [[ $tg == *:* ]]; then
rsynctg="[$tg]"
fi
# R = relative, t = times, O = omit-dir-times, p = perms
- rsync -RtOp bin/{mount-latest-subvol,check-subvol-stale} lib/err "root@$rsynctg:/usr/local"
+ er rsync -RtOp bin/{mount-latest-subvol,check-subvol-stale} lib/err "root@$rsynctg:/usr/local" || continue
# this can hang if we have an old nfs mount
- ssh root@$tg timeout -s 9 600 /usr/local/bin/mount-latest-subvol
+ ssh root@$tg timeout -s 9 600 /usr/local/bin/mount-latest-subvol ||:
done
+
+if (( $# == ${#failed_hosts[@]} )); then
+ echo "$0: error: all hosts failed: $*" >&2
+elif (( ${#failed_hosts[@]} )); then
+ echo "$0: error: some hosts failed: ${failed_hosts[@]}" >&2
+fi
+exit $ecode