From 8cb964b666798a8d2f10296be07af9ca6c9cdb21 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Sat, 8 Mar 2025 11:19:39 +0100 Subject: [PATCH] =?UTF-8?q?Feat:=20Passt=20das=20Skript=20an,=20dass=20je?= =?UTF-8?q?=20nach=20Verf=C3=BCgbarkeit=20das=20Dateisystem=20umgemounted?= =?UTF-8?q?=20wird.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Mount/HiDrive.sh | 76 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 59 insertions(+), 17 deletions(-) diff --git a/Mount/HiDrive.sh b/Mount/HiDrive.sh index 0be7216..5afaad6 100755 --- a/Mount/HiDrive.sh +++ b/Mount/HiDrive.sh @@ -2,7 +2,6 @@ # === IMPORTS === SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -source "$SCRIPT_DIR/../Utility/IsWebdavMounted.sh" source "$SCRIPT_DIR/../Utility/WakeOnLan.sh" source "$SCRIPT_DIR/../Utility/IsMounted.sh" source "$SCRIPT_DIR/../Utility/Log.sh" @@ -85,14 +84,42 @@ restart_script() { fi } -# === HAUPTLOGIK === +unmount() { + local mount_point="$1" + log "Unmounting $mount_point..." + if umount "$mount_point"; then + log "Unmount erfolgreich." + else + log "Fehler beim Unmounten von $mount_point." + return 1 + fi +} -# Prüfen, ob das Dateisystem bereits gemountet ist -if is_mounted "$MOUNT_POINT"; then - log "Das Dateisystem ist bereits gemountet unter $MOUNT_POINT." - rm -f "$RESTART_COUNT_FILE" # Neustart-Zähler zurücksetzen - exit 0 # Skript beenden, da kein weiteres Mounten erforderlich ist -fi +mount_nfs() { + log "Versuche, NFS-Dateisystem von $NFS_SERVER einzubinden..." + mkdir -p "$MOUNT_POINT" + if mount -t nfs "$NFS_SERVER" "$MOUNT_POINT"; then + log "NFS erfolgreich unter $MOUNT_POINT eingebunden!" + return 0 + else + log "Fehler beim Einbinden von NFS!" + return 1 + fi +} + +mount_webdav() { + log "Versuche, WebDAV-Dateisystem von $WEBDAV_URL einzubinden..." + mkdir -p "$MOUNT_POINT" + if mount -t davfs "$WEBDAV_URL" "$MOUNT_POINT"; then + log "WebDAV erfolgreich unter $MOUNT_POINT eingebunden!" + return 0 + else + log "Fehler beim Einbinden von WebDAV!" + return 1 + fi +} + +# === HAUPTLOGIK === # Prüfen, ob NFS oder WebDAV installiert ist if ! check_nfs_installed && ! check_webdav_installed; then @@ -100,20 +127,35 @@ if ! check_nfs_installed && ! check_webdav_installed; then restart_script "$@" fi -# Wenn nicht gemountet, mit der Hauptlogik fortfahren -log "Starte Wake-on-LAN-Prozess..." +# Gerät erreichbar? DEVICE_IP=$(wake_device "$DEVICE_MAC") if [[ -n "$DEVICE_IP" ]]; then - log "Gerät ist unter $DEVICE_IP erreichbar, versuche NFS-Mount..." - NFS_SERVER="$DEVICE_IP:$NFS_PATH" # Dynamische NFS-Server-Adresse setzen - if check_nfs_installed; then - mount_nfs + log "Gerät ist unter $DEVICE_IP erreichbar. Prüfe NFS-Mount..." + NFS_SERVER="$DEVICE_IP:$NFS_PATH" + if ! is_nfs_mounted "$MOUNT_POINT"; then + log "NFS ist nicht gemountet. Wechsel zu NFS..." + if is_mounted "$MOUNT_POINT"; then + unmount "$MOUNT_POINT" + fi + if check_nfs_installed; then + mount_nfs || restart_script "$@" + fi + else + log "NFS ist bereits gemountet." fi else - log "Gerät konnte nicht geweckt werden, versuche WebDAV-Mount..." - if check_webdav_installed && check_webdav_credentials; then - mount_webdav + log "Gerät ist nicht erreichbar. Prüfe WebDAV-Mount..." + if ! is_webdav_mounted "$MOUNT_POINT"; then + log "WebDAV ist nicht gemountet. Wechsel zu WebDAV..." + if is_mounted "$MOUNT_POINT"; then + unmount "$MOUNT_POINT" + fi + if check_webdav_installed && check_webdav_credentials; then + mount_webdav || restart_script "$@" + fi + else + log "WebDAV ist bereits gemountet." fi fi