pre="${0##*/}: "
m() { if $verbose; then printf "$pre%s\n" "$*"; fi; "$@"; }
e() { printf "$pre%s\n" "$*"; }
-die() { printf "$pre%s\n" "$*" >&2; exit 1; }
+die() { printf "$pre%s\n" "$*" >&2; echo "exiting with status 1" >&2; exit 1; }
+mexit() { echo "exiting with status $1"; exit $1; }
# latest $MAIL_HOST
if [[ -e /b/bash_unpublished/source-state ]]; then
fi
if $verbose; then
- e "options: conf_only=%s\ndry_run=%s\nrate_limit=%s\nverbose=%s\ncmd_arg=%s" "$conf_only" "$dry_run" "$rate_limit" "$verbose" "$cmd_arg"
+ printf "options: conf_only=%s\ndry_run=%s\nrate_limit=%s\nverbose=%s\ncmd_arg=%s" "$conf_only" "$dry_run" "$rate_limit" "$verbose" "$cmd_arg"
fi
### end options parsing
+
# TODO: i wonder if there should be an option to send to the default
# targets, plus any given on the command line.
if [[ ! -v targets && ! $source ]]; then
if [[ $HOSTNAME != "$MAIL_HOST" ]] && $cron ; then
echo "MAIL_HOST=$MAIL_HOST, nothing to do"
- exit 0
+ mexit 0
fi
+
+ at_work=false
+
case $HOSTNAME in
- kw|x2)
- if ping -q -c1 -w1 iank.vpn.office.fsf.org &>/dev/null; then
+ kw)
+ at_work=true
+ ;;&
+ x2|x3)
+ if ping -q -c1 -w1 hal.office.fsf.org \
+ && ip n show 192.168.0.26 | grep . &>/dev/null; then
+ at_work=true
+ fi
+ ;;&
+ kw|x2|x3)
+ if $at_work && ping -q -c1 -w1 iank.vpn.office.fsf.org &>/dev/null; then
home=iank.vpn.office.fsf.org
else
home=b8.nz
kw)
targets=($home x2)
;;
- x2)
+ x2|x3)
targets=($home kw)
;;
tp)
if [[ $source ]]; then
if [[ $(ssh $source systemctl is-active btrbk.service) != inactive ]]; then
echo "$0: error: cron btrbk is running on source. exiting out of caution"
- exit 1
+ mexit 1
fi
fi
e "found newer version on host $source. reexecing"
install -T $tmpf /usr/local/bin/btrbk-run
m /usr/local/bin/btrbk-run --pull-reexec "${orig_args[@]}"
- exit
+ mexit 0
fi
fi
if $conf_only; then
- exit
+ mexit 0
fi
if $dry_run; then
m btrbk -v -n $cmd_arg
- exit 0
+ mexit 0
elif [[ $cmd_arg == archive ]]; then
if [[ $source ]]; then
m btrbk $verbose_arg $progress_arg $cmd_arg ssh://$source$vol $vol
m btrbk $verbose_arg $progress_arg $cmd_arg $vol ssh://$tg$vol
done
fi
- exit 0
+ mexit 0
fi
# -q and just using the syslog option seemed nice,
# but it doesn't show when a send has a parent and when it doesn't.
m /a/exe/mount-latest-remote ${targets[@]}
fi
-exit $ret
+e btrbk-run COMPLETED with exit status $ret
+mexit $ret
# todo: move variable data we don't care about backing up
# to /nocow and symlink it.