Feat: Fügt ein WakeOnLan-Skript ein
This commit is contained in:
parent
f66787377d
commit
6a9b8ed05a
74
Utility/WakeOnLan.sh
Executable file
74
Utility/WakeOnLan.sh
Executable file
@ -0,0 +1,74 @@
|
||||
#!/bin/sh
|
||||
|
||||
# === IMPORTS ===
|
||||
source NetworkCheck.sh
|
||||
source Log.sh
|
||||
|
||||
# === KONFIGURATION ===
|
||||
PING_RETRIES=2 # Anzahl der PING-Versuche vor WOL
|
||||
WOL_RETRIES=2 # Max. Anzahl der WOL-Versuche
|
||||
WOL_WAIT=10 # Wartezeit nach WOL (Sekunden)
|
||||
|
||||
# === FUNKTIONEN ===
|
||||
|
||||
is_reachable() {
|
||||
local device_ip="$1"
|
||||
for i in $(seq 1 $PING_RETRIES); do
|
||||
log "Teste Erreichbarkeit von $device_ip - Versuch $i/$PING_RETRIES..."
|
||||
if ping -c 1 -W 2 "$device_ip" >/dev/null 2>&1; then
|
||||
log "Gerät $device_ip ist erreichbar."
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
log "Gerät $device_ip ist NICHT erreichbar."
|
||||
return 1
|
||||
}
|
||||
|
||||
send_wol() {
|
||||
local device_mac="$1"
|
||||
log "Sende Wake-on-LAN Signal an $device_mac..."
|
||||
wakeonlan "$device_mac"
|
||||
}
|
||||
|
||||
check_wol_installed() {
|
||||
if ! command -v wakeonlan >/dev/null 2>&1; then
|
||||
log "Fehler: wakeonlan ist nicht installiert! Bitte installiere es mit: sudo apt install wakeonlan"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
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>"
|
||||
return 1
|
||||
fi
|
||||
|
||||
wait_for_internet_connection
|
||||
|
||||
if is_reachable "$device_ip"; then
|
||||
log "Gerät ist bereits an, kein WOL nötig."
|
||||
return 0
|
||||
fi
|
||||
|
||||
check_wol_installed || return 1 # WOL-Tool prüfen, wenn nicht da, Abbruch
|
||||
|
||||
for attempt in $(seq 1 $WOL_RETRIES); do
|
||||
log "Wake-on-LAN Versuch $attempt/$WOL_RETRIES..."
|
||||
send_wol "$device_mac"
|
||||
log "Warte $WOL_WAIT Sekunden..."
|
||||
sleep $WOL_WAIT
|
||||
|
||||
if is_reachable "$device_ip"; then
|
||||
log "Gerät ist jetzt erreichbar!"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
log "Fehler: Gerät konnte nach $WOL_RETRIES Versuchen nicht erreicht werden."
|
||||
return 1
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user