usage() {
cat <<EOF
-Usage: ${0##*/} [OPTIONS] push|pull HOST
+Usage: switch-mail-host|switch-host2 [OPTIONS] push|pull HOST
Turn off mail receiving on OLD_HOST, run btrbk to move mail to NEW_HOST,
turn on mail receiving on NEW_HOST. Assumes we want to move all
new_host=$host
bbk_args="-t $new_host"
new_shell="ssh -F $HOME/.ssh/confighome root@$new_host"
- $new_shell -v hostname
- new_hostname=$($new_shell hostname)
+ if ! new_hostname=$($new_shell hostname); then
+ echo "$pre: error: failed ssh. retrying failed $new_shell with -v for more info:"
+ $new_shell -v hostname
+ fi
;;
pull)
old_host=$host
new_hostname=$HOSTNAME
bbk_args="-s $old_host"
old_shell="ssh -F $HOME/.ssh/confighome root@$old_host"
+ old_shelliank="ssh -F $HOME/.ssh/confighome iank@$old_host"
# tests ssh connection. crafted this to not need to do escape chars
f=/a/bin/bash_unpublished/source-state
if ! old_info=($($old_shell "hostname; sed -n s,.*MAIL_HOST=,,p $f; sed -n s,.*HOST2=,,p $f")); then
;;
esac
-
if $mail_only; then
mp_args="-m /o"
elif $host2_only; then
fi
-
-if [[ $old_hostname != "$MAIL_HOST" ]] && ! $force; then
+if $host2_only; then
+ if [[ $old_hostname != "$HOST2" ]]; then
+ err "\$old_hostname($old_hostname) != \$HOST2($HOST2). Rerun with --force if you really want this."
+ exit 1
+ fi
+elif [[ $old_hostname != "$MAIL_HOST" ]] && ! $force; then
err "\$old_hostname($old_hostname) != \$MAIL_HOST($MAIL_HOST). Rerun with --force if you really want this."
exit 1
fi
cat <<'EOF'
set -eE
if pgrep -G iank -u iank -f 'emacs --daemon' &>/dev/null; then
- export XDG_RUNTIME_DIR=/run/user/1000
- bufs="$(emacsclient --eval "$(cat /a/bin/ds/unsaved-buffers.el)"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//')"
+ bufs="$(sudo -u iank emacsclient --eval "$(cat /a/bin/ds/unsaved-buffers.el)"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//')"
if [[ $bufs ]]; then
echo "error: on $HOSTNAME, unsaved emacs files: $bufs" >&2
exit 1
$old_shell bash -s <<'EOF'
if pgrep -G iank -u iank -f 'emacs --daemon' &>/dev/null; then
- export XDG_RUNTIME_DIR=/run/user/1000
- bufs="$(emacsclient --eval "$(cat /a/bin/ds/unsaved-buffers.el)"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//')"
+ bufs="$(sudo -u iank emacsclient --eval "$(cat /a/bin/ds/unsaved-buffers.el)"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//')"
if [[ $bufs ]]; then
echo "error: on $HOSTNAME, unsaved emacs files: $bufs" >&2
exit 1
fi
if $host2_only; then
+ if [[ $old_hostname != "$MAIL_HOST" ]]; then
+ m $old_shell systemctl --now disable btrbk.timer
+ fi
+ m $new_shell systemctl --now enable btrbk.timer
exit 0
fi