sshmanager überarbeitet und gestrafft

This commit is contained in:
2025-06-15 23:27:00 +02:00
parent 3f6b07d343
commit 3be5ab9edd

View File

@@ -1,16 +1,22 @@
#!/bin/bash
rm serverliste.csv
wget http://fileserver.fritz.box/Mobaxterm/Homelab.mxtsessions
# Eingabedatei
# Konfigurationsvariablen
FILE_URL="http://fileserver.fritz.box/Mobaxterm/Homelab.mxtsessions"
INPUT_FILE="Homelab.mxtsessions"
# Ausgabedatei
OUTPUT_FILE="serverliste.csv"
# Kopfzeile der CSV-Datei
# Datei herunterladen (nur wenn erfolgreich, dann weitermachen)
if wget -q "$FILE_URL" -O "$INPUT_FILE"; then
echo "Datei erfolgreich heruntergeladen."
else
echo "Fehler: Datei konnte nicht heruntergeladen werden. Skript wird beendet."
exit 1
fi
# CSV-Datei vorbereiten
echo "Name,Adresse / Host" > "$OUTPUT_FILE"
# Alle Zeilen in Bookmarks-Abschnitten durchsuchen
# Daten aus der MobaXterm-Datei extrahieren und in CSV schreiben
awk '
/^\[Bookmarks/ { in_section=1; next }
/^\[/ && !/^\[Bookmarks/ { in_section=0 }
@@ -18,7 +24,7 @@ awk '
split($0, parts, "=")
name = parts[1]
split(parts[2], details, "%")
host = details[2]
host = details[2] # Hier ist die IP oder URL
gsub(/.*\\n/, "", name)
print name "," host
}
@@ -26,41 +32,34 @@ awk '
echo "Export abgeschlossen: $OUTPUT_FILE"
# Arrays für Menü vorbereiten
declare -a server_names
declare -a ip_addresses
# Datei mit Servernamen und IP-Adressen
server_file="serverliste.csv"
# Arrays für Servernamen und IP-Adressen initialisieren
server_names=()
ip_addresses=()
# Datei einlesen und Arrays füllen
# CSV ohne Kopfzeile einlesen
while IFS="," read -r name ip; do
server_names+=("$name")
ip_addresses+=("$ip")
done < <(tail -n +2 "$server_file")
done < <(tail -n +2 "$OUTPUT_FILE")
# Hauptmenü in einer Schleife anzeigen
# Menü anzeigen
while true; do
# Erzeuge die Einträge für das Whiptail-Menü
menu_entries=()
for i in "${!server_names[@]}"; do
menu_entries+=("$i" "${server_names[i]} (${ip_addresses[i]})")
done
menu_entries+=("q" "Ende")
# Zeige das Whiptail-Menü an
gui_choice=$(whiptail --title "Serverauswahl" --menu "Wähle einen Server aus:" 20 78 10 "${menu_entries[@]}" 3>&1 1>&2 2>&3)
gui_choice=$(whiptail --title "Serverauswahl" \
--menu "Wähle einen Server aus:" 20 78 10 \
"${menu_entries[@]}" 3>&1 1>&2 2>&3)
# Überprüfe die Auswahl
if [[ $? -ne 0 || "$gui_choice" == "q" ]]; then
echo "Programm beendet."
exit 0
fi
# Verarbeite die Serverauswahl
index=$gui_choice
echo "Verbinde zu ${server_names[index]} (${ip_addresses[index]})..."
ssh ${ip_addresses[index]}
done