3.1 KiB
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
-
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". -
Prüfung des Mount-Punkts
Es überprüft, ob bereits etwas auf dem angegebenen Mount-Punkt ($MOUNTPUNKT) gemountet ist. -
Interaktive Auswahl
- Falls kein Mount aktiv ist, wird der Benutzer per
gum chooseaufgefordert, einen Server zu wählen
(z. B.80oder81). - Danach wird über
sshfseine 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).
- Falls kein Mount aktiv ist, wird der Benutzer per
-
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)
sudo apt install gum # oder: go install github.com/charmbracelet/gum@latest -
Logger-Modul Das Skript erwartet ein Logging-Modul unter:
$GIT/logger/logger.shDieses Modul muss die Funktionen
log_init,log_start,log_info,log_errorundlog_endbereitstellen.
🧠 Konfiguration
Vor der Nutzung sollten die folgenden Variablen angepasst werden:
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 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:
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