diff --git a/Mount/HiDrive.sh b/Mount/HiDrive.sh index a24afa3..4a95150 100755 --- a/Mount/HiDrive.sh +++ b/Mount/HiDrive.sh @@ -7,20 +7,19 @@ source "$SCRIPT_DIR/../Utility/Log.sh" # === Hilfe-Seite === if [[ "$*" == *"-h"* ]]; then - echo "Benutzung: $0 " + echo "Benutzung: $0 " echo echo "Optionen:" echo " -h Zeigt diese Hilfenachricht an" echo " DEVICE_MAC Die MAC-Adresse des Geräts" - echo " DEVICE_IP Die IP-Adresse des Geräts" echo " WEBDAV_URL Die WebDAV-URL des Dateisystems" echo " NFS_PATH Der NFS-Pfad des Dateisystems" echo echo "Dieses Skript muss als root ausgeführt werden! Bsp. sudo $0" - echo "Folgende Pakete müssen installiert sein: davfs2, nfs-common, wakeonlan, wget" + echo "Folgende Pakete müssen installiert sein: davfs2, nfs-common, nmap-common, wakeonlan, wget" echo echo "Dieses Skript bindet HiDrive als Dateisystem ein bzw. ein lokales NAS, sollte dieses vorhanden sein." - echo "WakeOnLan-Pakete werden zum starten versendet." + echo "WakeOnLan-Pakete werden zum Starten versendet." exit 0 fi @@ -31,19 +30,17 @@ if [[ $EUID -ne 0 ]]; then fi # === PARAMETER-ÜBERPRÜFUNG === -if [[ "$#" -ne 4 ]]; then - echo "Benutzung: $0 " +if [[ "$#" -ne 3 ]]; then + echo "Benutzung: $0 " exit 1 fi DEVICE_MAC="$1" -DEVICE_IP="$2" -WEBDAV_URL="$3" -NFS_PATH="$4" +WEBDAV_URL="$2" +NFS_PATH="$3" # === 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 === @@ -101,8 +98,11 @@ mount_webdav() { # === HAUPTLOGIK === log "Starte Wake-on-LAN-Prozess..." -if wake_device "$DEVICE_MAC" "$DEVICE_IP"; then - log "Gerät ist erreichbar, versuche NFS-Mount..." +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 fi diff --git a/Utility/WakeOnLan.sh b/Utility/WakeOnLan.sh old mode 100644 new mode 100755 index 01568a3..686d3f9 --- a/Utility/WakeOnLan.sh +++ b/Utility/WakeOnLan.sh @@ -32,22 +32,25 @@ check_wol_installed() { wake_device() { local device_mac="$1" - local device_ip="$2" - if [[ -z "$device_mac" || -z "$device_ip" ]]; then - log "Fehler: MAC- und IP-Adresse müssen angegeben werden!" - log "Verwendung: wake_device " + if [[ -z "$device_mac" ]]; then + log "Fehler: MAC-Adresse muss angegeben werden!" return 1 fi wait_for_internet_connection - if is_reachable "$device_ip" "$PING_RETRIES_BEFORE_WOL"; then + # Versuche, die IP aus der MAC-Adresse zu ermitteln + local device_ip + device_ip=$(get_ip_from_mac "$device_mac") + + if [[ -n "$device_ip" ]] && is_reachable "$device_ip" "$PING_RETRIES_BEFORE_WOL"; then log "Gerät ist bereits an, kein WOL nötig." + echo "$device_ip" # Nur die IP-Adresse ausgeben return 0 fi - check_wol_installed || return 1 # WOL-Tool prüfen, wenn nicht da, Abbruch + check_wol_installed || return 1 for ((attempt = 1; attempt<=WOL_RETRIES; attempt++)); do log "Wake-on-LAN Versuch $attempt/$WOL_RETRIES..." @@ -55,8 +58,12 @@ wake_device() { log "Warte $WOL_WAIT Sekunden..." sleep "$WOL_WAIT" - if is_reachable "$device_ip" "$PING_RETRIES_AFTER_WOL"; then + # IP-Adresse erneut abrufen + device_ip=$(get_ip_from_mac "$device_mac") + + if [[ -n "$device_ip" ]] && is_reachable "$device_ip" "$PING_RETRIES_AFTER_WOL"; then log "Gerät ist jetzt erreichbar!" + echo "$device_ip" # Erfolgreich: Nur die IP-Adresse ausgeben return 0 fi done