#!/bin/bash # Zielverzeichnis im Home-Ordner MOUNT_DIR="/shd/CTC/WS/removable_media" # Datei, die gemountete Geräte auflistet MOUNTED_DEVICES_FILE="/shd/CTC/WS/.mounted_devices" rm "$MOUNTED_DEVICES_FILE" touch "$MOUNTED_DEVICES_FILE" # Verzeichnis erstellen, falls es nicht existiert mkdir -p "$MOUNT_DIR" # Funktion zum Mounten mount_usb() { for device in $(udisksctl dump | grep -E '^\s*Device:\s*/dev/sd[b-z][0-9]*$' | awk '{print $2}'); do # Überprüfen, ob das Gerät bereits gemountet ist if ! mount | grep -q "$device"; then # Mountpunkt erstellen if ! grep -q "$(basename "$device")" "$MOUNTED_DEVICES_FILE"; then # Gerät mounten MOUNT_OUTPUT=$(udisksctl mount -b "$device" --no-user-interaction) if [ $? -eq 0 ]; then MOUNT_PATH=$(echo "$MOUNT_OUTPUT" | sed -n 's/.* at \(.*\)/\1/p' | sed 's/\.$//') SYMLINK_PATH="$MOUNT_DIR/" ln -s "$MOUNT_PATH" "$SYMLINK_PATH" echo "Erfolgreich gemountet: $device nach $SYMLINK_PATH" echo "$(basename "$device")" >> "$MOUNTED_DEVICES_FILE" else echo "Fehler beim Mounten: $device" rmdir "$MOUNT_POINT" fi fi fi done } remove_unmounted_symlinks(){ for symlink in "$MOUNT_DIR"/*; do if [ -L "$symlink" ] && [ ! -e "$symlink" ]; then echo "Entferne Symlink" rm "$symlink" fi done # Entferne Geräte aus der Datei, die nicht mehr gemountet sind for device in $(cat "$MOUNTED_DEVICES_FILE"); do lsblk_out=$(lsblk -r -o NAME,MOUNTPOINT | grep "$device") if [[ -z "$lsblk_out" ]]; then echo "Gerät $device wurde entfernt oder ist nicht mehr vorhanden." sed -i "/$device/d" "$MOUNTED_DEVICES_FILE" fi done } # Hauptüberwachungsschleife while true; do mount_usb remove_unmounted_symlinks sleep 5 # Überprüft alle 5 Sekunden done