diff --git a/Mount/HiDrive.sh b/Mount/HiDrive.sh new file mode 100755 index 0000000..5f47651 --- /dev/null +++ b/Mount/HiDrive.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +# === IMPORTS === +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/../Utility/WakeOnLan.sh" +source "$SCRIPT_DIR/../Utility/Log.sh" + +# === ROOT-PRÜFUNG === +if [[ $EUID -ne 0 ]]; then + echo "Dieses Skript muss als root ausgeführt werden! Bitte starte es mit sudo." + exit 1 +fi + +# === PARAMETER-ÜBERPRÜFUNG === +if [[ "$#" -ne 4 ]]; then + echo "Benutzung: $0 " + exit 1 +fi + +DEVICE_MAC="$1" +DEVICE_IP="$2" +WEBDAV_URL="$3" +NFS_PATH="$4" + +# === KONFIGURATION === +MOUNT_POINT="/media/HiDrive" # Gemeinsamer Einhängepunkt für NFS/WebDAV +NFS_SERVER="$DEVICE_IP:$NFS_PATH" # Dynamische NFS-Server-Adresse +WEBDAV_CREDENTIALS="/etc/davfs2/secrets" # WebDAV-Passwortdatei + +# === FUNKTIONEN === +check_nfs_installed() { + if ! command -v mount.nfs &>/dev/null; then + log "Fehler: NFS-Client nicht installiert! Bitte installiere es mit: sudo apt install nfs-common" + return 1 + fi + return 0 +} + +check_webdav_installed() { + if ! command -v mount.davfs &>/dev/null; then + log "Fehler: WebDAV-Client nicht installiert! Bitte installiere es mit: sudo apt install davfs2" + return 1 + fi + return 0 +} + +check_webdav_credentials() { + if [[ ! -f "$WEBDAV_CREDENTIALS" ]]; then + log "Fehler: WebDAV-Passwortdatei nicht gefunden unter $WEBDAV_CREDENTIALS!" + return 1 + fi + if ! grep -q "$MOUNT_POINT" "$WEBDAV_CREDENTIALS"; then + log "Fehler: Keine Zugangsdaten für den Mountpoint $MOUNT_POINT in $WEBDAV_CREDENTIALS gefunden!" + return 1 + fi + return 0 +} + +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 === +log "Starte Wake-on-LAN-Prozess..." +if wake_device "$DEVICE_MAC" "$DEVICE_IP"; then + log "Gerät ist erreichbar, versuche NFS-Mount..." + if check_nfs_installed; then + mount_nfs + fi +else + log "Gerät konnte nicht geweckt werden, versuche WebDAV-Mount..." + if check_webdav_installed && check_webdav_credentials; then + mount_webdav + fi +fi