#!/usr/bin/env bash set -Eeuo pipefail SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" CFG="$SCRIPT_DIR/config.sh" [[ -f "$CFG" ]] || { echo "ERROR: config.sh fehlt: $CFG (erst 01_setup.sh ausführen)"; exit 1; } # shellcheck disable=SC1090 source "$CFG" # --- helpers --- APP="raspi-backup" STATE_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/${APP}" LOG_FILE="${STATE_DIR}/${APP}.log" mkdir -p "$STATE_DIR" log(){ echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE" >/dev/null; } die(){ log "ERROR: $*"; echo "ERROR: $*" >&2; exit 1; } need_cmd(){ command -v "$1" >/dev/null 2>&1 || die "Fehlt: $1"; } need_root(){ [[ "${EUID:-$(id -u)}" -eq 0 ]] || die "Bitte mit sudo starten: sudo $SCRIPT_DIR/03_verify.sh"; } host_short(){ hostname -s 2>/dev/null || hostname 2>/dev/null || echo "raspi"; } nas_alias(){ echo "${ALIAS_PREFIX}-$(host_short)"; } need_root need_cmd ssh need_cmd rsync # validate config vars : "${NAS_HOST:?}" "${NAS_USER:?}" "${NAS_PORT:?}" "${ALIAS_PREFIX:?}" "${SSH_USER:?}" "${NAS_BACKUP_BASE:?}" hn="$(host_short)" alias="$(nas_alias)" ssh_user="$SSH_USER" remote_root="${NAS_BACKUP_BASE%/}/${hn}" log "VERIFY START: alias=${alias} remote_root=${remote_root}" # optional Port check if command -v nc >/dev/null 2>&1; then log "Check NAS Port: ${NAS_HOST}:${NAS_PORT}" nc -vz "$NAS_HOST" "$NAS_PORT" >/dev/null 2>&1 || die "NAS Port nicht erreichbar: ${NAS_HOST}:${NAS_PORT}" else log "nc nicht vorhanden – überspringe Port-Check" fi # SSH login via alias log "Check SSH Login: ${alias}" sudo -u "$ssh_user" ssh -o BatchMode=yes -o ConnectTimeout=10 "$alias" "echo ok" >/dev/null \ || die "SSH Login über Alias fehlgeschlagen: $alias" # Remote backup dir log "Check/Create Remote Backup Dir: ${remote_root}" sudo -u "$ssh_user" ssh -o BatchMode=yes "$alias" "mkdir -p '$remote_root' && test -d '$remote_root'" >/dev/null \ || die "Remote Backup Pfad nicht nutzbar: $remote_root" log "VERIFY OK" echo "Verify OK:" echo "- NAS erreichbar (${NAS_HOST}:${NAS_PORT})" echo "- SSH Alias funktioniert (${alias})" echo "- Remote Backup Pfad OK (${remote_root})"