# SSHFS Automatisches Mount-Skript Dieses Bash-Skript automatisiert das Mounten und Unmounten eines Remote-Verzeichnisses über SSHFS. Es prüft den Status des Mount-Punkts, ermöglicht die interaktive Auswahl eines Servers und verwendet ein benutzerdefiniertes Logging-System. ## Inhaltsverzeichnis - [Features](#features) - [Voraussetzungen](#voraussetzungen) - [Konfiguration](#konfiguration) - [Verwendung](#verwendung) - [Skript-Logik](#skript-logik) - [Logging](#logging) ## Features * **Mount-Punkt-Prüfung:** Überprüft, ob der angegebene Mount-Punkt bereits belegt ist. * **Interaktive Serverauswahl:** Nutzt `gum` für die Auswahl eines Servers aus einer vordefinierten Liste. * **SSHFS-Mount:** Stellt eine SSHFS-Verbindung zu einem Remote-Verzeichnis her. * **Unmount-Option:** Bietet die Möglichkeit, einen bereits gemounteten Punkt bei Bedarf zu entladen. * **Umfassendes Logging:** Protokolliert alle Schritte und Fehler in einer Logdatei. ## Voraussetzungen Stellen Sie sicher, dass die folgenden Tools auf Ihrem System installiert und konfiguriert sind: * **`sshfs`:** Für das Mounten von Remote-Dateisystemen über SSH. ```bash sudo apt install sshfs # Für Debian/Ubuntu # Oder andere Paketmanager ``` * **`gum`:** Ein nützliches Tool für interaktive Prompts. Installationsanweisungen finden Sie auf der [GitHub-Seite von Gum](https://github.com/charmbracelet/gum). * **SSH-Schlüssel:** Entsprechende SSH-Schlüssel (`id_$SERVER` im Home-Verzeichnis des Benutzers) müssen vorhanden sein, um eine passwortlose Anmeldung auf den Remote-Servern zu ermöglichen. Der Port 2222 wird verwendet. * **`logger.sh`:** Ein benutzerdefiniertes Logging-Skript, das im unter `GIT` definierten Pfad (`$GIT/logger/logger.sh`) erwartet wird. Dieses Skript ist für die Log-Initialisierung und das Schreiben von Log-Nachrichten verantwortlich. ## Konfiguration Passen Sie die folgenden Variablen am Anfang des Skripts an Ihre Umgebung an: * `GIT`: Pfad zum Haupt-Git-Verzeichnis, wo sich das `logger`-Skript befindet. * *Beispiel:* `/home/service/Gitea` * `USER`: Der Benutzername auf dem Remote-SSH-Server. * *Beispiel:* `alf` * `IPWURZEL`: Die statische Basis der IP-Adresse, die mit der `SERVERWAHL` kombiniert wird. * *Beispiel:* `100.87.87` (ergibt IPs wie `100.87.87.80`, `100.87.87.81`) * `MOUNTPUNKT`: Der lokale absolute Pfad, in den das Remote-Verzeichnis gemountet werden soll. * *Beispiel:* `/home/service/FILME` * `SERVERWAHL`: Eine durch Leerzeichen getrennte Liste der numerischen Endungen der Server-IP-Adressen, die für die Auswahl zur Verfügung stehen. Diese werden auch verwendet, um den Namen der SSH-Identitätsdatei zu bestimmen (`id_$SERVER`). * *Beispiel:* `80 81` ## Verwendung 1. Stellen Sie sicher, dass alle [Voraussetzungen](#voraussetzungen) erfüllt und die [Konfigurationsvariablen](#konfiguration) im Skript angepasst sind. 2. Machen Sie das Skript ausführbar: ```bash chmod +x dein_skriptname.sh ``` 3. Führen Sie das Skript aus: ```bash ./dein_skriptname.sh ``` ## Skript-Logik Das Skript führt die folgenden Schritte aus: 1. **Logging-Initialisierung:** `log_init` wird aufgerufen, um die Logdatei `$GIT/logger/Logs/sshfs.log` vorzubereiten. 2. **Mount-Punkt-Prüfung:** Es wird geprüft, ob `$MOUNTPUNKT` bereits gemountet ist. * **Wenn frei (`MOUNTET=1`):** * Der Benutzer wählt interaktiv einen Server aus der `SERVERWAHL` mit `gum`. * Das Remote-Verzeichnis (`/srv/`) des ausgewählten Servers wird über SSHFS in `$MOUNTPUNKT` gemountet. Es wird `IdentityFile="$HOME/id_$SERVER"` und Port `2222` verwendet. * **Wenn belegt (`MOUNTET=0`):** * Der Benutzer wird gefragt, ob das Verzeichnis entladen werden soll (`ja`/`nein`) mit `gum`. * Bei Auswahl von `ja` wird der `$MOUNTPUNKT` entladen (`umount`). * Bei Auswahl von `nein` wird der Vorgang abgebrochen. * **Bei unerwartetem Status:** Eine Fehlermeldung wird protokolliert. 3. **Logging-Abschluss:** `log_end` wird aufgerufen, um die Logging-Session zu beenden. ## Logging Alle Aktionen, Entscheidungen und Fehler während der Skriptausführung werden in der Logdatei protokolliert, die durch die Variable `GIT` und den festen Pfad `logger/Logs/sshfs.log` definiert ist. Dies ist nützlich für die Fehlerbehebung und zum Nachvollziehen der Skriptaktivitäten.