#!/bin/bash # === 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=1; i<=PING_RETRIES; i++)); do log "Teste Erreichbarkeit von $device_ip - Versuch $i/$PING_RETRIES..." if ping -c 1 -W 2 "$device_ip" &>/dev/null; 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; 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 " 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=1; attempt<=WOL_RETRIES; attempt++)); 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 }