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_git="6" 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 "6 … Gitea" 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 ;; 6) # Gitea verbinde $a_git ;; 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