136 lines
3.1 KiB
Markdown
136 lines
3.1 KiB
Markdown
# 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:
|
|
```bash
|
|
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
|
|
```bash
|
|
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)
|
|
|
|
---
|
|
|