X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=mount-latest-remote;h=978b21124990747fb9da70a8a3ccfd25c90405ca;hb=103a2e153f844343c359882079936b2521c82f15;hp=76c1bef04b72fd7cda40cf42cb37276faf6649bf;hpb=5c8530653c87af3757a2c649772e0405bcd143a0;p=distro-setup diff --git a/mount-latest-remote b/mount-latest-remote index 76c1bef..978b211 100755 --- a/mount-latest-remote +++ b/mount-latest-remote @@ -25,13 +25,35 @@ fi $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