#!/bin/bash source ./enviroment/secret.env source ./enviroment/envireoment.env # Konfigurationsvariablen WEBDAV_URL="$ENV_WEBDAV_URL" MOUNT_POINT="$ENV_WEBDAV_MOUNT" RCLONE_CONFIG="$ENV_RCLONE_CONF" SFTP_HOST1="$ENV_SFTP_HOST1" DOCKER_HOST="$ENV_DOCKER_HOST" # Nutzerdaten WEBDAV_USER="$ENV_WEBDAV_BENUTZER" WEBDAV_PASS="$ENV_WEBDAV_PASSWORD" SFTP_USER1="$ENV_SFTP_USER1" # 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_HOST=$1 REMOTE_USER=$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" sftptransfer "$SFTP_USER1" "$SFTP_HOST1" /exoport/data/ mv ./temp/* ./webdava/ # 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