Feat: Passt die Skripte so an, dass keine IP-Adresse mehr angegeben werden muss
This commit is contained in:
parent
a7be7b39b6
commit
69b8a914ca
@ -7,20 +7,19 @@ source "$SCRIPT_DIR/../Utility/Log.sh"
|
||||
|
||||
# === Hilfe-Seite ===
|
||||
if [[ "$*" == *"-h"* ]]; then
|
||||
echo "Benutzung: $0 <DEVICE_MAC> <DEVICE_IP> <WEBDAV_URL> <NFS_PATH>"
|
||||
echo "Benutzung: $0 <DEVICE_MAC> <WEBDAV_URL> <NFS_PATH>"
|
||||
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 <DEVICE_MAC> <DEVICE_IP> <WEBDAV_URL> <NFS_PATH>"
|
||||
if [[ "$#" -ne 3 ]]; then
|
||||
echo "Benutzung: $0 <DEVICE_MAC> <WEBDAV_URL> <NFS_PATH>"
|
||||
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
|
||||
|
||||
21
Utility/WakeOnLan.sh
Normal file → Executable file
21
Utility/WakeOnLan.sh
Normal file → Executable file
@ -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 <MAC-Adresse> <IP-Adresse>"
|
||||
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user