From 8e916ecd1730212f6899d88d8585ee668cf086c5 Mon Sep 17 00:00:00 2001 From: alf Date: Sun, 15 Jun 2025 12:31:44 +0200 Subject: [PATCH] Erster Commit --- ssher.sh | 313 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 ssher.sh diff --git a/ssher.sh b/ssher.sh new file mode 100644 index 0000000..bef2d54 --- /dev/null +++ b/ssher.sh @@ -0,0 +1,313 @@ +sstand="2025-05-21" +eende="nein" + +############ Werte anpassen: ################# +logmodus="beide" # beide: Lokal und auf 100.87.87.2 / lokal: nur lokal / remote: nur auf 100.87.87.2 +loglokaldatei="/$HOME/ssher.log" # erforderlich bei Log-Modus "beide" und "lokal" +sschluessel="id_superao" +schluesselverz="/home/alf/Schlüssel" +############################################## + +pport="2222" +uuser="alf" + +a_tail="100.87.87" +a_chef2="2" +a_tresor="3" +a_ca="5" +a_omv7="7" +a_chrome="47" +a_p40="50" +a_p3="53" +a_p7="77" +a_omvpi="80" +a_omv2000="81" +a_flug="101" +a_ABS="102" +a_spzssh="52" + +function anzeige () { +clear +echo "---------------------------------" +echo "SSH - Verbindungs MGR V0.01" +echo "---------------------------------" +echo "User: $uuser" +echo "Port: $pport" +echo "Schlüssel: $sschluessel" +echo "Schlüssel-Verz.: $schluesselverz" +echo "Logmodus: $logmodus" +echo "--------------------------------" +echo "Schlüssel im Verzeichnis:" +ls $schluesselverz/id_* +echo "--------------------------------" +echo "1 … OMV-Pi 101 … Flugsicherung" +echo "2 … OMV 2000 102 … ABS" +echo "3 … Tresor-Router" +echo "4 … Chromebook" +echo "5 … CA" +echo "7 … OMV 7" +echo "8 … Chefnetz2" +echo "p1 … SPZSSH (root)" +echo "p3 … PC 3 (Moser)" +echo "p7 … PC77" +echo "p40 … PTV PC 40 (Besucher OT Ew)" +echo " " +echo "l … Log sehen / p … Port ändern / u … User ändern / s … Schlüssel ändern / v … Schlüsselverzeichnis ändern" +echo "L … Sicherung laden / S … Sichern" +echo "0 … Ende " +echo " " +} + +function verbinde () { +nnummer=$1 +log "Verbinde mit $nnummer…" +ssh $uuser@$a_tail.$nnummer -p $pport -i $schluesselverz/$sschluessel +eerr=$? +if [ $eerr = 0 ] +then + log "Fertig, alles ok!" + sleep 1 +else + log "Da ist ein Fehler aufgetreten: ERR $eerr" + read -p "Weiter mit Enter… " wweiter +fi +} + +function wahlschluesselverz () { + log "Ändere Schlüsselverzeichnis…" + read -p "Wechsel in Verzeichnis: " schluesselverz + log "Geändert zu: $schluesselverz" + echo " " + echo "Schlüssel im Verzeichnis: " + ls $schluesselverz/id_* + echo " " + read -p "OK? j/n " janein + case $janein in + j) + log "Wechsel zu $schluesselverz bestätigt" + sleep 2 + ;; + + *) + log "Wechsel des Schlüsselverzeichnisses wird verworfen" + log "Schlüsselvberzeichnis wird zurückgesetzt auf $altverz" + schluesselverz=$altverz + sleep 2 + ;; + esac +} + +function wahlschluessel () { + log "Wähle neuen Schlüssel" + echo "Schlüssel im Verzeichnis:" + ls $schluesselverz/id_* + echo " " + read -p "Schlüssel: " sschluessel + log "Ändere Schlüssel auf $sschluessel" +} + +function sichern () { + altschluessel=$sschluessel + altuser=$uuser + altverz=$schluesselverz + altport=$pport + +} + +function laden () { + sschluessel=$altschluessel + uuser=$altuser + schluesselverz=$altverz + pport=$altport +} + +function log () { + logtext="$1" + # echo "$logtext" + case $logmodus in + "lokal") + echo "$(date) SSHER $logtext" >>$loglokaldatei + echo "$(date) SSHER $logtext" + ;; + + "remote") + logger -s -t "SSHER" "$logtext" + ;; + + "beide") + echo "$(date) SSHER $logtext" >>$loglokaldatei + logger -s -t "SSHER" "$logtext" + ;; + "*") + ECHO "Fehler!" + exit 2 + esac + +} + +################ Vorbereitung ########################### +log "-------------------------------------------------------------------" +log "Starte SSHER..." +log "Prüfe auf vorhandene Schlüssel…" +korrekt="nein" +durchl=3 + +while [ $korrekt = "nein" ] +do + log "Prüfe, ob Schlüssel vorhanden... " + if [ -e $schluesselverz/$sschluessel ] + then + log "Schlüssel vorhanden!" + korrekt="ja" + else + ((durchl--)) + if [ $durchl = 0 ] + then + log "Abbruch: Keine Schlüssel gefunden" + exit 2 + else + echo "Die Schlüsseldatei $sschluessel wurde nicht gefunden." + echo "Verzeichnis: $schluesselverz" + echo " " + log "Keine Schlüssel gefunden, Neuwahl…" + wahlschluesselverz + wahlschluessel + fi + fi +done + + +########## Hauptschleife ############ +log "Starte Hauptschleife…" +log "Standarddaten sichern..." +sichern + +while [ $eende = "nein" ] +do + anzeige + read -p "Wahl? " wwahl + + case $wwahl in + + 0) #Schluss + eende="ja" + log "Beendet!" + ;; + + 1) #OMV Pi + verbinde $a_omvpi + ;; + + 2) #OMV 2000 + verbinde $a_omv2000 + ;; + + 3) # Tresor-Router + verbinde $a_tresor + ;; + + 4) #Chromebook + verbinde $a_chrome + ;; + + 5) # CA + verbinde $a_ca + ;; + + 7) #OMV 7 + verbinde $a_omv7 + ;; + + 8) #Chefnetz 2 + verbinde $a_chef2 + ;; + + 101) # Flugsicherung Ubuntuserver 1 + sichern + verbinde $a_flug + ;; + + 102) # ABS Ubuntuserver 2 + sichern + verbinde $a_ABS + ;; + + l) #Log sehen + if [ $logmodus = "beide" ] + then + log "Lokales Log lesen…" + less ssher.log + log "fertig." + else + if [ $logmodus = "lokal" ] + then + log "Lokales Log lesen…" + less ssher.log + log "fertig." + else + echo "Die Logdaten liegen ausschließlich auf chefnetz2". + echo "Bitte dort im Verzeichnis /var/log/remote… nachsehen!" + read -p "Weiter mit Enter…" wwarte + fi + fi + ;; + + L) # Gesicherte Daten laden + log "Daten laden" + laden + ;; + + S) # Sichern + log "Daten sichern" + sichern + ;; + + p1) #SPZSSH + log "Ändere Nutzer zeitw. auf root und Port auf 22" + sichern + uuser="root" + pport=22 + sleep 2 + verbinde $a_spzssh + laden + log "Nutzer zurückgesetzt auf $uuser und Port $pport" + ;; + + p3) #PC 3 + verbinde $a_p3 + ;; + + p7) #PC 77 + verbinde $a_p7 + ;; + + p40) #PC 40 + verbinde $a_p40 + ;; + + p) #Port-Änderung + read -p "Port: " pport + log "Ändere Port auf $pport" + ;; + + u) #Nutzer-Änderung + read -p "User: " uuser + log "Ändere Nutzer auf $uuser" + ;; + + v) #Schlüsselverzeichnis ändern + wahlschluesselverz + ;; + + s) #Schlüssel ändern + wahlschluessel + ;; + + + *) #Fehleingabe + echo "Was meinst Du?!" + log "Fehleingabe!" + sleep 2 + ;; + esac +done