From 4e90ec054eb3893f5081a6e24b3c6a6d974861bd Mon Sep 17 00:00:00 2001 From: poikilos <7557867+poikilos@users.noreply.github.com> Date: Tue, 13 Apr 2021 16:27:32 -0400 Subject: [PATCH] Add a world sync script. --- pull-world.sh | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 pull-world.sh diff --git a/pull-world.sh b/pull-world.sh new file mode 100755 index 0000000..f9bbb7e --- /dev/null +++ b/pull-world.sh @@ -0,0 +1,77 @@ +#!/bin/bash +if [ -z "$CONF_PATH" ]; then + CONF_PATH="$HOME/.config/EnlivenMinetest/remote.rc" +fi + +if [ -f "$CONF_PATH" ]; then + . "$CONF_PATH" +fi + +_is_conf_ok=true +if [ -z "$REMOTE_HOST" ]; then + echo "* REMOTE_HOST...not set." + _is_conf_ok=false +else + echo "* REMOTE_HOST...OK (\"$REMOTE_HOST\")." +fi +if [ -z "$REMOTE_USER" ]; then + echo "* REMOTE_USER...not set." + _is_conf_ok=false +else + echo "* REMOTE_USER...OK (\"$REMOTE_USER\")." +fi +if [ -z "$REMOTE_WORLD" ]; then + echo "* REMOTE_WORLD...not set." + _is_conf_ok=false +else + echo "* REMOTE_WORLD...OK (\"$REMOTE_WORLD\")." +fi +if [ -z "$REMOTE_WORLD_PATH" ]; then + echo "* REMOTE_WORLD_PATH...not set." + _is_conf_ok=false +else + echo "* REMOTE_WORLD_PATH...OK (\"$REMOTE_WORLD_PATH\")." +fi +if [ -z "$LOCAL_WORLD_COPY_PATH" ]; then + echo "* LOCAL_WORLD_COPY_PATH...not set." + _is_conf_ok=false +else + echo "* LOCAL_WORLD_COPY_PATH...OK (\"$LOCAL_WORLD_COPY_PATH\")." +fi +if [ -z "$LOCAL_UNPRIV_USER" ]; then + echo "* LOCAL_UNPRIV_USER...not set." + _is_conf_ok=false +else + echo "* LOCAL_UNPRIV_USER...OK (\"$LOCAL_UNPRIV_USER\")." +fi +if [ "@$_is_conf_ok" != "@true" ]; then + cat << END +Error: You must set the following in "$CONF_PATH" or the environment first (any that are blank below are not set): + +REMOTE_HOST="$REMOTE_HOST" +REMOTE_USER="$REMOTE_USER" +REMOTE_WORLD="$REMOTE_WORLD" +REMOTE_WORLD_PATH="$REMOTE_WORLD_PATH" +LOCAL_WORLD_COPY_PATH="$LOCAL_WORLD_COPY_PATH" +LOCAL_UNPRIV_USER="$LOCAL_UNPRIV_USER" +END + exit 1 +fi +ssh $REMOTE_USER@$REMOTE_HOST "/opt/minebest/mtbin/minetest-stop $REMOTE_WORLD" +ssh $REMOTE_USER@$REMOTE_HOST "/opt/minebest/mtbin/minetest-list" +echo "* running 'rsync -rt --info=progress2 $REMOTE_USER@$REMOTE_HOST:$REMOTE_WORLD_PATH/ $LOCAL_WORLD_COPY_PATH'..." +rsync -rt --info=progress2 $REMOTE_USER@$REMOTE_HOST:$REMOTE_WORLD_PATH/ $LOCAL_WORLD_COPY_PATH +if [ $? -eq 0 ]; then + echo "OK" +else + echo "FAILED" +fi +printf "* setting owner of \"$LOCAL_WORLD_COPY_PATH\" to $LOCAL_UNPRIV_USER:$LOCAL_UNPRIV_USER..." +chown $LOCAL_UNPRIV_USER:$LOCAL_UNPRIV_USER -R "$LOCAL_WORLD_COPY_PATH" +if [ $? -eq 0 ]; then + echo "OK" +else + echo "FAILED" +fi +ssh $REMOTE_USER@$REMOTE_HOST "/opt/minebest/mtbin/minetest-start $REMOTE_WORLD" +ssh $REMOTE_USER@$REMOTE_HOST "/opt/minebest/mtbin/minetest-list"