4.4 KiB
4.4 KiB
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
gumfü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 Paketmanagergum: 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_$SERVERim 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 unterGITdefinierten 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 daslogger-Skript befindet.- Beispiel:
/home/service/Gitea
- Beispiel:
USER: Der Benutzername auf dem Remote-SSH-Server.- Beispiel:
alf
- Beispiel:
IPWURZEL: Die statische Basis der IP-Adresse, die mit derSERVERWAHLkombiniert wird.- Beispiel:
100.87.87(ergibt IPs wie100.87.87.80,100.87.87.81)
- Beispiel:
MOUNTPUNKT: Der lokale absolute Pfad, in den das Remote-Verzeichnis gemountet werden soll.- Beispiel:
/home/service/FILME
- Beispiel:
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
- Beispiel:
Verwendung
- Stellen Sie sicher, dass alle Voraussetzungen erfüllt und die Konfigurationsvariablen im Skript angepasst sind.
- Machen Sie das Skript ausführbar:
chmod +x dein_skriptname.sh - Führen Sie das Skript aus:
./dein_skriptname.sh
Skript-Logik
Das Skript führt die folgenden Schritte aus:
- Logging-Initialisierung:
log_initwird aufgerufen, um die Logdatei$GIT/logger/Logs/sshfs.logvorzubereiten. - Mount-Punkt-Prüfung: Es wird geprüft, ob
$MOUNTPUNKTbereits gemountet ist.- Wenn frei (
MOUNTET=1):- Der Benutzer wählt interaktiv einen Server aus der
SERVERWAHLmitgum. - Das Remote-Verzeichnis (
/srv/) des ausgewählten Servers wird über SSHFS in$MOUNTPUNKTgemountet. Es wirdIdentityFile="$HOME/id_$SERVER"und Port2222verwendet.
- Der Benutzer wählt interaktiv einen Server aus der
- Wenn belegt (
MOUNTET=0):- Der Benutzer wird gefragt, ob das Verzeichnis entladen werden soll (
ja/nein) mitgum. - Bei Auswahl von
jawird der$MOUNTPUNKTentladen (umount). - Bei Auswahl von
neinwird der Vorgang abgebrochen.
- Der Benutzer wird gefragt, ob das Verzeichnis entladen werden soll (
- Bei unerwartetem Status: Eine Fehlermeldung wird protokolliert.
- Wenn frei (
- Logging-Abschluss:
log_endwird 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.