Compare commits

..

2 Commits

2 changed files with 41 additions and 25 deletions

1
.gitignore vendored
View File

@ -33,3 +33,4 @@ core
.fleet .fleet
.idea .idea
.vscode

View File

@ -25,13 +25,13 @@ RESTART_COUNT=$(<"$RESTART_COUNT_FILE")
# === Hilfe-Seite === # === Hilfe-Seite ===
if [[ "$*" == *"-h"* ]]; then if [[ "$*" == *"-h"* ]]; then
echo "Benutzung: $0 <DEVICE_MAC> <WEBDAV_URL> <NFS_PATH>" echo "Benutzung: $0 <WEBDAV_URL> [DEVICE_MAC] [NFS_PATH]"
echo echo
echo "Optionen:" echo "Optionen:"
echo " -h Zeigt diese Hilfenachricht an" echo " -h Zeigt diese Hilfenachricht an"
echo " DEVICE_MAC Die MAC-Adresse des Geräts" echo " WEBDAV_URL Die WebDAV-URL des Dateisystems (Pflichtfeld)"
echo " WEBDAV_URL Die WebDAV-URL des Dateisystems" echo " DEVICE_MAC Die MAC-Adresse des Geräts (optional, für Wake-on-LAN)"
echo " NFS_PATH Der NFS-Pfad des Dateisystems" echo " NFS_PATH Der NFS-Pfad des Dateisystems (optional, wenn NFS genutzt wird)"
echo echo
echo "Dieses Skript muss als root ausgeführt werden! Bsp. sudo $0" echo "Dieses Skript muss als root ausgeführt werden! Bsp. sudo $0"
echo "Folgende Pakete müssen installiert sein: davfs2, nfs-common, nmap-common, wakeonlan, wget" echo "Folgende Pakete müssen installiert sein: davfs2, nfs-common, nmap-common, wakeonlan, wget"
@ -50,15 +50,15 @@ if [[ $EUID -ne 0 ]]; then
fi fi
# === PARAMETER-ÜBERPRÜFUNG === # === PARAMETER-ÜBERPRÜFUNG ===
if [[ "$#" -ne 3 ]]; then if [[ "$#" -lt 1 ]]; then
echo "Benutzung: $0 <DEVICE_MAC> <WEBDAV_URL> <NFS_PATH>" echo "Benutzung: $0 <WEBDAV_URL> [DEVICE_MAC] [NFS_PATH]"
remove_lock remove_lock
exit 1 exit 1
fi fi
DEVICE_MAC="$1" WEBDAV_URL="$1"
WEBDAV_URL="$2" DEVICE_MAC="${2:-}"
NFS_PATH="$3" NFS_PATH="${3:-}"
# === KONFIGURATION === # === KONFIGURATION ===
MOUNT_POINT="/media/HiDrive" # Gemeinsamer Einhängepunkt für NFS/WebDAV MOUNT_POINT="/media/HiDrive" # Gemeinsamer Einhängepunkt für NFS/WebDAV
@ -143,31 +143,46 @@ if ! check_nfs_installed && ! check_webdav_installed; then
restart_script "$@" restart_script "$@"
fi fi
# Gerät erreichbar? if [[ -n "$DEVICE_MAC" && -n "$NFS_PATH" ]]; then
DEVICE_IP=$(wake_device "$DEVICE_MAC") log "Wake-on-LAN wird genutzt für Gerät mit MAC: $DEVICE_MAC"
DEVICE_IP=$(wake_device "$DEVICE_MAC")
if [[ -n "$DEVICE_IP" ]]; then if [[ -n "$DEVICE_IP" ]]; then
log "Gerät ist unter $DEVICE_IP erreichbar. Prüfe NFS-Mount..." log "Gerät ist unter $DEVICE_IP erreichbar. Prüfe NFS-Mount..."
NFS_SERVER="$DEVICE_IP:$NFS_PATH" NFS_SERVER="$DEVICE_IP:$NFS_PATH"
if ! is_nfs_mounted "$MOUNT_POINT"; then if ! is_nfs_mounted "$MOUNT_POINT"; then
log "NFS ist nicht gemountet. Wechsel zu NFS..." log "NFS ist nicht gemountet. Wechsel zu NFS..."
if is_mounted "$MOUNT_POINT"; then if is_mounted "$MOUNT_POINT"; then
unmount "$MOUNT_POINT" unmount "$MOUNT_POINT"
fi fi
if check_nfs_installed; then if check_nfs_installed; then
mount_nfs || restart_script "$@" mount_nfs || restart_script "$@"
fi
else
log "NFS ist bereits gemountet."
fi fi
else else
log "NFS ist bereits gemountet." log "Gerät ist nicht erreichbar. Prüfe WebDAV-Mount..."
if ! is_webdav_mounted "$MOUNT_POINT"; then
log "WebDAV ist nicht gemountet. Wechsel zu WebDAV..."
if is_mounted "$MOUNT_POINT"; then
unmount "$MOUNT_POINT"
fi
if check_webdav_installed; then
mount_webdav || restart_script "$@"
fi
else
log "WebDAV ist bereits gemountet."
fi
fi fi
else else
log "Gerät ist nicht erreichbar. Prüfe WebDAV-Mount..." log "Kein Gerät angegeben. Direktes Einbinden von WebDAV..."
if ! is_webdav_mounted "$MOUNT_POINT"; then if ! is_webdav_mounted "$MOUNT_POINT"; then
log "WebDAV ist nicht gemountet. Wechsel zu WebDAV..." log "WebDAV ist nicht gemountet. Einbinden..."
if is_mounted "$MOUNT_POINT"; then if is_mounted "$MOUNT_POINT"; then
unmount "$MOUNT_POINT" unmount "$MOUNT_POINT"
fi fi
if check_webdav_installed && check_webdav_credentials; then if check_webdav_installed; then
mount_webdav || restart_script "$@" mount_webdav || restart_script "$@"
fi fi
else else