From cdcb177c0c8667e7b40e164254805df06ac77325 Mon Sep 17 00:00:00 2001 From: "max.mehl" Date: Mon, 16 Apr 2018 09:56:47 +0200 Subject: [PATCH] abort and log backup if SSH login doesn't work --- ssh-checker.sh | 17 +++++++++++++++-- uberspace-backup.sh | 7 +++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/ssh-checker.sh b/ssh-checker.sh index 4fc7bb7..2bc4d02 100755 --- a/ssh-checker.sh +++ b/ssh-checker.sh @@ -30,22 +30,35 @@ source "$CURDIR"/config.cfg if [ ! -e "$HOSTS" ]; then echo "Missing hosts file. Please set a correct value of HOSTS= in your config file. Current value: $HOSTS"; exit 1; fi +ARG1="$1" + function trim { sed -r -e 's/^\s*//g' -e 's/\s*$//g' } while read line; do + # if line is a comment, go to next line if $(echo "$line" | grep -qE "^\s*#"); then continue; fi RHOST=$(echo "$line" | cut -d";" -f1 | trim) + + if [[ "${ARG1}" != "" ]] && [[ "${ARG1}" != "${RHOST}" ]]; then + continue + fi echo "[INFO] Trying ${RHOST}" STATUS=$(ssh -n -o BatchMode=yes -o ConnectTimeout=5 ${RHOST} "echo -n"; echo $?) if [ $STATUS != 0 ]; then - echo "[ERROR] No SSH login possible for ${RHOST}. Adding public key with password:" - cat ~/.ssh/id_rsa.pub | ssh ${RHOST} 'cat >> ~/.ssh/authorized_keys' + echo -n "[ERROR] No SSH login possible for ${RHOST}. " + if [[ "${ARG1}" != "" ]]; then + echo "Aborting." + exit 1 + else + echo "Adding public key with password: " + cat ~/.ssh/id_rsa.pub | ssh ${RHOST} 'cat >> ~/.ssh/authorized_keys' + fi else echo "[SUCCESS] SSH login possible for ${RHOST}." fi diff --git a/uberspace-backup.sh b/uberspace-backup.sh index 356c55f..b141e56 100755 --- a/uberspace-backup.sh +++ b/uberspace-backup.sh @@ -48,6 +48,7 @@ function logecho { } while read line; do + # if line is a comment, go to next line if $(echo "$line" | grep -qE "^\s*#"); then continue; fi RHOST=$(echo "$line" | cut -d";" -f1 | trim) @@ -55,6 +56,12 @@ while read line; do ALLRDIR=$(echo "$line" | cut -d";" -f2 | trim) logecho "${RHOST}: Starting backups" + + if ! "${CURDIR}"/ssh-checker.sh "${RHOST}"; then + logecho "${RHOST}: ERROR when connecting via SSH. Please run ssh-checker.sh to debug." + logecho "${RHOST}: Aborting backup after an error." + continue + fi NORDIR=$(echo $ALLRDIR | grep -o "|" | wc -l) NORDIR=$[$NORDIR + 1]