diff --git a/Mount/HiDrive.sh b/Mount/HiDrive.sh index 94aad74..d457ad4 100755 --- a/Mount/HiDrive.sh +++ b/Mount/HiDrive.sh @@ -25,13 +25,13 @@ RESTART_COUNT=$(<"$RESTART_COUNT_FILE") # === Hilfe-Seite === if [[ "$*" == *"-h"* ]]; then - echo "Benutzung: $0 " + echo "Benutzung: $0 [DEVICE_MAC] [NFS_PATH]" echo echo "Optionen:" echo " -h Zeigt diese Hilfenachricht an" - echo " DEVICE_MAC Die MAC-Adresse des Geräts" - echo " WEBDAV_URL Die WebDAV-URL des Dateisystems" - echo " NFS_PATH Der NFS-Pfad des Dateisystems" + echo " WEBDAV_URL Die WebDAV-URL des Dateisystems (Pflichtfeld)" + echo " DEVICE_MAC Die MAC-Adresse des Geräts (optional, für Wake-on-LAN)" + echo " NFS_PATH Der NFS-Pfad des Dateisystems (optional, wenn NFS genutzt wird)" echo echo "Dieses Skript muss als root ausgeführt werden! Bsp. sudo $0" echo "Folgende Pakete müssen installiert sein: davfs2, nfs-common, nmap-common, wakeonlan, wget" @@ -50,15 +50,15 @@ if [[ $EUID -ne 0 ]]; then fi # === PARAMETER-ÜBERPRÜFUNG === -if [[ "$#" -ne 3 ]]; then - echo "Benutzung: $0 " +if [[ "$#" -lt 1 ]]; then + echo "Benutzung: $0 [DEVICE_MAC] [NFS_PATH]" remove_lock exit 1 fi -DEVICE_MAC="$1" -WEBDAV_URL="$2" -NFS_PATH="$3" +WEBDAV_URL="$1" +DEVICE_MAC="${2:-}" +NFS_PATH="${3:-}" # === KONFIGURATION === MOUNT_POINT="/media/HiDrive" # Gemeinsamer Einhängepunkt für NFS/WebDAV @@ -143,31 +143,46 @@ if ! check_nfs_installed && ! check_webdav_installed; then restart_script "$@" fi -# Gerät erreichbar? -DEVICE_IP=$(wake_device "$DEVICE_MAC") +if [[ -n "$DEVICE_MAC" && -n "$NFS_PATH" ]]; then + log "Wake-on-LAN wird genutzt für Gerät mit MAC: $DEVICE_MAC" + DEVICE_IP=$(wake_device "$DEVICE_MAC") -if [[ -n "$DEVICE_IP" ]]; then - 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 "$@" + if [[ -n "$DEVICE_IP" ]]; then + 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 "NFS ist bereits gemountet." + 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; then + mount_webdav || restart_script "$@" + fi + else + log "WebDAV ist bereits gemountet." + fi fi else - log "Gerät ist nicht erreichbar. Prüfe WebDAV-Mount..." + log "Kein Gerät angegeben. Direktes Einbinden von WebDAV..." if ! is_webdav_mounted "$MOUNT_POINT"; then - log "WebDAV ist nicht gemountet. Wechsel zu WebDAV..." + log "WebDAV ist nicht gemountet. Einbinden..." if is_mounted "$MOUNT_POINT"; then unmount "$MOUNT_POINT" fi - if check_webdav_installed && check_webdav_credentials; then + if check_webdav_installed; then mount_webdav || restart_script "$@" fi else