#!/bin/bash SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) CONF_FILE="$SCRIPT_DIR/sync.conf" if [ ! -f "$CONF_FILE" ]; then zenity --error --text="sync.conf nicht gefunden!" exit 1 fi source "$CONF_FILE" # 1. Passwort abfragen SSH_PASS=$(zenity --password --title="SSH Authentifizierung" --text="Passwort für $SSH_USER@$SSH_HOST:") # Abbrechen wenn kein Passwort eingegeben wurde [ -z "$SSH_PASS" ] && exit 0 LOCAL_DIR="$SCRIPT_DIR/" # 2. Synchronisation (Download & Upload) # Wir fügen '-o StrictHostKeyChecking=no' hinzu, damit SSH nicht bei unbekannten Hosts blockiert. zenity --info --text="Synchronisation wird gestartet..." --timeout=2 # Download sshpass -p "$SSH_PASS" rsync -auvz -e "ssh -p $SSH_PORT -o StrictHostKeyChecking=no" "$SSH_USER@$SSH_HOST:$REMOTE_DIR" "$LOCAL_DIR" 2>/tmp/rsync_error # Upload sshpass -p "$SSH_PASS" rsync -auvz -e "ssh -p $SSH_PORT -o StrictHostKeyChecking=no" "$LOCAL_DIR" "$SSH_USER@$SSH_HOST:$REMOTE_DIR" 2>>/tmp/rsync_error # 3. Erfolgskontrolle if [ $? -eq 0 ]; then zenity --info --title="Erfolg" --text="Synchronisation erfolgreich abgeschlossen!" else ERROR_MSG=$(cat /tmp/rsync_error) zenity --error --title="Fehler" --text="Synchronisation fehlgeschlagen!\n\nDetails:\n$ERROR_MSG" fi # Temporäre Fehlerdatei löschen rm -f /tmp/rsync_error