V1 pre testing

This commit is contained in:
Tim Schilling | IuK
2024-11-28 10:51:49 +01:00
parent 2f42aa2e26
commit 2223026a40
6 changed files with 197 additions and 1 deletions
+116
View File
@@ -0,0 +1,116 @@
#!/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