Feat: Fügt Lock-File funktionalität hinzu.
This commit is contained in:
parent
8cb964b666
commit
b3dedd446f
@ -4,8 +4,15 @@
|
|||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../Utility/WakeOnLan.sh"
|
source "$SCRIPT_DIR/../Utility/WakeOnLan.sh"
|
||||||
source "$SCRIPT_DIR/../Utility/IsMounted.sh"
|
source "$SCRIPT_DIR/../Utility/IsMounted.sh"
|
||||||
|
source "$SCRIPT_DIR/../Utility/Lock.sh"
|
||||||
source "$SCRIPT_DIR/../Utility/Log.sh"
|
source "$SCRIPT_DIR/../Utility/Log.sh"
|
||||||
|
|
||||||
|
# === TRAP EINRICHTEN ===
|
||||||
|
trap trap_remove_lock SIGINT SIGTERM
|
||||||
|
|
||||||
|
# === LOCK-FILE ERSTELLEN ===
|
||||||
|
create_lock
|
||||||
|
|
||||||
# === KONSTANTEN ===
|
# === KONSTANTEN ===
|
||||||
MAX_RESTARTS=2 # Maximale Anzahl an Neustarts
|
MAX_RESTARTS=2 # Maximale Anzahl an Neustarts
|
||||||
RESTART_COUNT_FILE="/tmp/hidrive_restart_count" # Datei zur Speicherung des Neustart-Zählers
|
RESTART_COUNT_FILE="/tmp/hidrive_restart_count" # Datei zur Speicherung des Neustart-Zählers
|
||||||
@ -31,18 +38,21 @@ if [[ "$*" == *"-h"* ]]; then
|
|||||||
echo
|
echo
|
||||||
echo "Dieses Skript bindet HiDrive als Dateisystem ein bzw. ein lokales NAS, sollte dieses vorhanden sein."
|
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."
|
||||||
|
remove_lock
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# === ROOT-PRÜFUNG ===
|
# === ROOT-PRÜFUNG ===
|
||||||
if [[ $EUID -ne 0 ]]; then
|
if [[ $EUID -ne 0 ]]; then
|
||||||
echo "Dieses Skript muss als root ausgeführt werden! Bitte starte es mit sudo."
|
echo "Dieses Skript muss als root ausgeführt werden! Bitte starte es mit sudo."
|
||||||
|
remove_lock
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# === PARAMETER-ÜBERPRÜFUNG ===
|
# === PARAMETER-ÜBERPRÜFUNG ===
|
||||||
if [[ "$#" -ne 3 ]]; then
|
if [[ "$#" -ne 3 ]]; then
|
||||||
echo "Benutzung: $0 <DEVICE_MAC> <WEBDAV_URL> <NFS_PATH>"
|
echo "Benutzung: $0 <DEVICE_MAC> <WEBDAV_URL> <NFS_PATH>"
|
||||||
|
remove_lock
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -76,10 +86,12 @@ restart_script() {
|
|||||||
RESTART_COUNT=$((RESTART_COUNT + 1))
|
RESTART_COUNT=$((RESTART_COUNT + 1))
|
||||||
echo "$RESTART_COUNT" >"$RESTART_COUNT_FILE"
|
echo "$RESTART_COUNT" >"$RESTART_COUNT_FILE"
|
||||||
log "Neustart des Skripts (Versuch $RESTART_COUNT von $MAX_RESTARTS)..."
|
log "Neustart des Skripts (Versuch $RESTART_COUNT von $MAX_RESTARTS)..."
|
||||||
|
remove_lock
|
||||||
exec "$0" "$@"
|
exec "$0" "$@"
|
||||||
else
|
else
|
||||||
log "Maximale Anzahl an Neustarts erreicht ($MAX_RESTARTS). Skript wird beendet."
|
log "Maximale Anzahl an Neustarts erreicht ($MAX_RESTARTS). Skript wird beendet."
|
||||||
rm -f "$RESTART_COUNT_FILE" # Neustart-Zähler zurücksetzen
|
rm -f "$RESTART_COUNT_FILE" # Neustart-Zähler zurücksetzen
|
||||||
|
remove_lock
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -161,3 +173,6 @@ fi
|
|||||||
|
|
||||||
# Neustart-Zähler zurücksetzen, wenn erfolgreich
|
# Neustart-Zähler zurücksetzen, wenn erfolgreich
|
||||||
rm -f "$RESTART_COUNT_FILE"
|
rm -f "$RESTART_COUNT_FILE"
|
||||||
|
|
||||||
|
# === LOCK-FILE ENTFERNEN ===
|
||||||
|
remove_lock
|
||||||
|
|||||||
30
Utility/Lock.sh
Normal file
30
Utility/Lock.sh
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
LOCK_DIR="/run/lock" # Standard für systemweite Locks
|
||||||
|
if [[ ! -w "$LOCK_DIR" ]]; then
|
||||||
|
LOCK_DIR="/tmp" # Fallback für benutzerspezifische Locks
|
||||||
|
fi
|
||||||
|
|
||||||
|
LOCK_FILE="$LOCK_DIR/$(basename "$0").lock"
|
||||||
|
|
||||||
|
create_lock() {
|
||||||
|
if [[ -e "$LOCK_FILE" ]]; then
|
||||||
|
log "Ein anderer Prozess läuft bereits. Lock-File gefunden: $LOCK_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
touch "$LOCK_FILE"
|
||||||
|
log "Lock-File erstellt: $LOCK_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_lock() {
|
||||||
|
if [[ -e "$LOCK_FILE" ]]; then
|
||||||
|
rm -f "$LOCK_FILE"
|
||||||
|
log "Lock-File entfernt: $LOCK_FILE"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
trap_remove_lock() {
|
||||||
|
log "Signal empfangen. Lock-File wird entfernt."
|
||||||
|
remove_lock
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user