Compare commits
No commits in common. "d8b689b8f911db212f7543ae72ef9f3fb2567230" and "a5f77c9b7f3395a1968ac8305dc72a7503370b48" have entirely different histories.
d8b689b8f9
...
a5f77c9b7f
@ -1,95 +0,0 @@
|
|||||||
#!/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 <DEVICE_MAC> <DEVICE_IP> <WEBDAV_URL> <NFS_PATH>"
|
|
||||||
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
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Funktion zum Protokollieren von Nachrichten
|
|
||||||
log() {
|
|
||||||
echo "$(date +'%Y-%m-%d %H:%M:%S') - $1"
|
|
||||||
}
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# === IMPORTS ===
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
source "$SCRIPT_DIR/Log.sh"
|
|
||||||
|
|
||||||
# Funktion zum Prüfen der Internetverbindung
|
|
||||||
check_internet() {
|
|
||||||
wget -q --spider http://google.com
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
|
|
||||||
# Funktion, die die Internetverbindung prüft und darauf wartet
|
|
||||||
wait_for_internet_connection() {
|
|
||||||
log "Prüfe Internetverbindung..."
|
|
||||||
|
|
||||||
# Zähler für die Anzahl der Prüfungen
|
|
||||||
count=1
|
|
||||||
|
|
||||||
# Warte, bis eine Internetverbindung vorhanden ist
|
|
||||||
until check_internet; do
|
|
||||||
count=$((count + 1))
|
|
||||||
log "Keine Internetverbindung. Warte 10 Sekunden... (Versuch $count)"
|
|
||||||
sleep 10
|
|
||||||
done
|
|
||||||
|
|
||||||
log "Internetverbindung nach $count Versuchen vorhanden."
|
|
||||||
}
|
|
||||||
|
|
||||||
# Diese Funktion kann jetzt mit `wait_for_internet_connection` aufgerufen werden
|
|
||||||
@ -1,75 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# === IMPORTS ===
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
source "$SCRIPT_DIR/NetworkCheck.sh"
|
|
||||||
source "$SCRIPT_DIR/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 <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=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
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user