This repository has been archived on 2025-07-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
ssher/ssher.sh
2025-06-15 19:24:57 +02:00

314 lines
6.2 KiB
Bash

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