2025-11-09 10:37:15 +00:00
2025-11-09 10:37:15 +00:00
2025-11-09 10:18:10 +00:00

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

  • 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.
    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.
  • 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 erfüllt und die Konfigurationsvariablen im Skript angepasst sind.
  2. Machen Sie das Skript ausführbar:
    chmod +x dein_skriptname.sh
    
  3. Führen Sie das Skript aus:
    ./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.

Description
No description provided
Readme 35 KiB
Languages
Shell 100%