#!/bin/bash # Konfigurationsvariablen MOUNT_POINT="./webdav/" DOCKER_HOST="tim-tt-02" SFTP_HOST1="tim-tt-03" # Nutzerdaten SFTP_USER1="sftpuser" # Farben für die Ausgabe GREEN="\033[0;32m" RED="\033[0;31m" NC="\033[0m" # Keine Farbe # Funktion zur Ausgabe von Meldungen function log() { echo -e "${GREEN}[INFO] $1${NC}" } function error() { echo -e "${RED}[ERROR] $1${NC}" } function dockerremote(){ #Enrichten von Variablen für Funktion REMOTE_HOST=$1 REMOTE_USER=$2 CONTAINER_NAME=$3 # Prüfen, ob der Container läuft ssh "$REMOTE_USER@$REMOTE_HOST" "docker ps --filter name=$CONTAINER_NAME --filter status=running --quiet" > /dev/null 2>&1 if [ $? -ne 0 ]; then log "Der Container $CONTAINER_NAME ist nicht gestartet. Starte ihn jetzt..." ssh "$REMOTE_USER@$REMOTE_HOST" "docker start $CONTAINER_NAME" else log "Der Container $CONTAINER_NAME läuft bereits." fi # Warten, bis der Container gestoppt wird log "Warte, bis der Container $CONTAINER_NAME gestoppt ist..." ssh "$REMOTE_USER@$REMOTE_HOST" "while docker ps --filter name=$CONTAINER_NAME --filter status=running --quiet > /dev/null; do sleep 1; done" log "Der Container ist Gestoppt mache weiter" REMOTE_HOST="" REMOTE_USER="" } function sftptransfer(){ #Einrichten der Variablen für Funktion REMOTE_USER=$1 REMOTE_HOST=$2 REMOTE_DIR=$3 LOCAL_DIR="./temp" log "Sicherstellen das $LOCAL_DIR existiert" mkdir -p "$LOCAL_DIR" log "Lade Datein von $REMOTE_DIR herunter" sftp "$REMOTE_USER"@"$REMOTE_HOST" << EOF cd $REMOTE_DIR lcd $LOCAL_DIR get -r * bye EOF log "Datein Heruntergeladen" } # Sicherstellen, dass das Skript als root ausgeführt wird if [[ $EUID -ne 0 ]]; then error "Dieses Skript muss als root ausgeführt werden!" exit 1 fi # Mount-Punkt erstellen log "Erstelle den Mount-Punkt $MOUNT_POINT..." mkdir -p "$MOUNT_POINT" chmod 755 "$MOUNT_POINT" # WebDAV-Freigabe mounten log "Mounten der WebDAV-Freigabe nach $MOUNT_POINT..." rclone mount webdav: "$MOUNT_POINT" --daemon --allow-other --umask 002 || { error "Fehler beim Mounten der WebDAV-Freigabe!" exit 1 } log "WebDAV-Freigabe erfolgreich gemountet." dockerremote "$DOCKER_USER" "$DOCKER_HOST" "bw-export-iuk" rm -rf ./webdav/ sftptransfer "$SFTP_USER1" "$SFTP_HOST1" "/sftpuser/export/data/" mv ./temp/* ./webdav/ # Webdav Unmounten log "Unmounten der WebDAV-Freigabe..." if mountpoint -q "$MOUNT_POINT"; then fusermount -u "$MOUNT_POINT" && log "Unmount erfolgreich." || error "Fehler beim Unmounten!" else log "Der Mount-Punkt ist bereits unmountet." fi