2025-11-09 10:42:34 +00:00
2025-11-09 10:42:34 +00:00
2025-11-09 10:18:10 +00:00

SSHFS-Mount-Skript mit Logging

Dieses Bash-Skript ermöglicht das komfortable Ein- und Aushängen eines entfernten Dateisystems über SSHFS.
Es nutzt Gum zur interaktiven Auswahl und ein eigenes Logging-System, um alle Aktionen nachvollziehbar zu protokollieren.


🧩 Funktionsweise

  1. Initialisierung
    Das Skript lädt ein Logging-Modul (logger.sh) aus dem Gitea-Repository und startet das Logging in der Datei
    "$GIT/logger/Logs/sshfs.log".

  2. Prüfung des Mount-Punkts
    Es überprüft, ob bereits etwas auf dem angegebenen Mount-Punkt ($MOUNTPUNKT) gemountet ist.

  3. Interaktive Auswahl

    • Falls kein Mount aktiv ist, wird der Benutzer per gum choose aufgefordert, einen Server zu wählen
      (z. B. 80 oder 81).
    • Danach wird über sshfs eine Verbindung hergestellt:
      sshfs -o IdentityFile="$HOME/id_$SERVER" -p2222 $USER@$IPWURZEL.$SERVER:/srv/ $MOUNTPUNKT
      
    • Falls bereits ein Mount aktiv ist, fragt das Skript, ob dieser gelöst werden soll (ja / nein).
  4. Logging
    Jeder Schritt wird protokolliert. Fehlermeldungen und Rückgabewerte werden ebenfalls erfasst.


⚙️ Voraussetzungen

  • SSHFS installiert
    sudo apt install sshfs
    

* **Gum** (für interaktive Auswahlmenüs)

  ```bash
  sudo apt install gum
  # oder:
  go install github.com/charmbracelet/gum@latest
  ```

* **Logger-Modul**
  Das Skript erwartet ein Logging-Modul unter:

  ```
  $GIT/logger/logger.sh
  ```

  Dieses Modul muss die Funktionen `log_init`, `log_start`, `log_info`, `log_error` und `log_end` bereitstellen.

---

## 🧠 Konfiguration

Vor der Nutzung sollten die folgenden Variablen angepasst werden:

```bash
GIT="/home/service/Gitea"      # Pfad zum Gitea-Repo
USER="alf"                     # SSH-Benutzername
IPWURZEL="100.87.87"           # Basis der IP-Adresse
MOUNTPUNKT="/home/service/FILME"  # Lokaler Mount-Punkt
SERVERWAHL="80 81"             # Servernummern für die Auswahl
```

---

## 🚀 Verwendung

Starte das Skript manuell:

```bash
bash sshfs_mount.sh
```

Beispielablauf:

```
[INFO] Prüfen, ob schon etwas auf /home/service/FILME gemountet ist
[INFO] Verzeichnis ist frei.
Bitte Server wählen...
> 80
[INFO] Gewählter Server: 80
[INFO] Mount-Vorgang gestartet...
```

Wenn bereits ein Mount besteht:

```
[INFO] Verzeichnis ist belegt!
Wird gelöst…
```

---

## 🪵 Log-Dateien

Alle Logeinträge werden unter folgendem Pfad gespeichert:

```
$GIT/logger/Logs/sshfs.log
```

---

## 🧰 Beispiel für `logger.sh`

Ein einfaches Beispielmodul:

```bash
log_init()   { LOGFILE="$1"; echo "=== $(date) ===" >> "$LOGFILE"; }
log_start()  { echo "[START] $(date)" >> "$LOGFILE"; }
log_info()   { echo "[INFO]  $1" >> "$LOGFILE"; }
log_error()  { echo "[ERROR] $1" >> "$LOGFILE"; }
log_end()    { echo "[END]   $(date)" >> "$LOGFILE"; echo >> "$LOGFILE"; }
```

---

## 📄 Lizenz

Dieses Skript kann frei verwendet, angepasst und erweitert werden.
Eine Nennung des ursprünglichen Autors (alf) wird begrüßt.

---

## 🧾 Autor

**Alf Oberkoetter**
[trevor1969 auf GitHub](https://github.com/trevor1969)

---

Description
No description provided
Readme 35 KiB
Languages
Shell 100%