diff --git a/lock_and_unmount.sh b/lock_and_unmount.sh new file mode 100644 index 0000000..a23876f --- /dev/null +++ b/lock_and_unmount.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# === KONFIGURATION === +declare -A DRIVES +# Format: [Mapper-Name]="/srv/dev-disk-by-uuid-" +DRIVES[media]="/srv/dev-disk-by-uuid-cdd3de56-0b4f-48cf-aec0-abf441a759b5" +DRIVES[eintb]="/srv/dev-disk-by-uuid-97a953c1-2796-48d6-878b-083d4553bcf4" +DRIVES[kleine]="/srv/dev-disk-by-uuid-e8faffbf-7ba0-4fc3-876e-107f7c6a429d" + +for MAPPER in "${!DRIVES[@]}"; do + MOUNTPOINT="${DRIVES[$MAPPER]}" + echo ">>> Verarbeite $MAPPER (Mountpoint: $MOUNTPOINT)" + + if mountpoint -q "$MOUNTPOINT"; then + echo " 📢 Mountpoint ist eingehängt." + + # Blockierende Prozesse anzeigen + echo " 🔎 Blockierende Prozesse:" + sudo fuser -vm "$MOUNTPOINT" || echo " Keine Prozesse gefunden." + + # Normal aushängen versuchen + echo " 🚪 Versuche normales Aushängen..." + if sudo umount "$MOUNTPOINT"; then + echo " ✅ Erfolgreich ausgehängt." + else + echo " ⚠ Normales Aushängen fehlgeschlagen." + + echo " 💤 Versuche Lazy Unmount..." + if sudo umount -l "$MOUNTPOINT"; then + echo " ✅ Lazy Unmount erfolgreich." + else + echo " ❌ Lazy Unmount ebenfalls fehlgeschlagen. Bitte prüfen!" + continue + fi + fi + else + echo " ℹ Mountpoint ist nicht eingehängt." + fi + + # LUKS schließen + echo " 🔒 Schließe LUKS-Mapper /dev/mapper/$MAPPER ..." + if sudo cryptsetup close "$MAPPER"; then + echo " ✅ Mapper $MAPPER geschlossen." + else + echo " ⚠ Mapper $MAPPER konnte nicht geschlossen werden (evtl. noch in Benutzung)." + fi + + echo +done