From 3be5ab9eddb25c62c8a5872ac237d78cbdc18f27 Mon Sep 17 00:00:00 2001 From: Stefan Mewes Date: Sun, 15 Jun 2025 23:27:00 +0200 Subject: [PATCH] =?UTF-8?q?sshmanager=20=C3=BCberarbeitet=20und=20gestraff?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ssh_manager.sh | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/ssh_manager.sh b/ssh_manager.sh index dca7f14..f352db1 100755 --- a/ssh_manager.sh +++ b/ssh_manager.sh @@ -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