115 lines
2.7 KiB
Bash
Executable File
115 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
|
|
# Konfigurationsvariablen
|
|
MOUNT_POINT="./webdav/"
|
|
DOCKER_HOST="kitl-v-lx-dock.kitl.bayern"
|
|
SFTP_HOST1=$DOCKER_HOST
|
|
|
|
# Nutzerdaten
|
|
DOCKER_USER="kitl"
|
|
SFTP_USER1=$DOCKER_USER
|
|
|
|
|
|
# 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"
|
|
REMOTE_HOST=""
|
|
REMOTE_USER=""
|
|
}
|
|
|
|
|
|
# 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
|