PowerShell SSH-Problematik Switch

IT-T0bi

Bisher: Zeuselus001
Cadet 2nd Year
Dabei seit
Dez. 2019
Beiträge
20
Moinsen Leute,

ich habe ein kleines Problem. Ich bin dabei ein Script zu schreiben, welches sich automatisch auf den Switchen via SSH anmelden soll um die Konfig zu sichern. Problematik an der ganzen Sache ist, dass beim Login erst login as.... und im Anschluss der user name und das Passwort abgefragt wird. Sprich beim Prompt für login as kann man hinschreiben was man will, da erst danach die Credentials angegeben werden. Bitte fragt mich nicht wieso das bei den Switchen so ist. Jede andere Linux VM funktioniert ohne Probleme, da dort direkt die Credentials abgefragt werden.
Ich müsste also erst ein Enter betätigen um in Anschluss die Credentials zu übergeben. Ich habe bereits PLink, sowie das Posh-SSH Modul ausprobiert. Leider habe ich noch keine Lösung gefunden um erst ein Enter vor der Übergabe der Credentials ausführen. In der Regel brechen die Module auch ab, wenn Username und Passwort falsch sind.
Wahrscheinlich ist das auch garnicht so möglich, aber ich will es wenigstens versucht haben.

MfG
 

cricru

Lt. Junior Grade
Dabei seit
Sep. 2005
Beiträge
482
Kannst du auf dem switch public/private key login aktivieren? Dann könntest du im ersten Schritt einfach irgendwas schreiben und wirst dann automatisch eingeloggt so die Theorie...
 

snaxilian

Captain
Dabei seit
Jan. 2016
Beiträge
3.616
Beste/stabilste/sicherste Lösung wäre die Idee von @cricru, also Login per public key.
Meine nächste Idee wäre: Afaik können viele managebare Switche selbst per Crontab ihre config irgendwohin sichern, sprich nicht du holst diese ab sondern die Switche senden dir diese.
Geht dies nicht bzw. du brauchst eine weitere Lösung mit ggf. automatisierter Interaktion sieh dir TCL an. Damit kannst du in Skripten Ein- & Ausgaben steuern. Eine recht brauchbare Anleitung findest du z.B. hier: https://www.admin-magazin.de/Das-Heft/2012/01/Skripting-mit-Expect-und-Tcl

Königsweg: Nicht mehr Switche händisch konfigurieren und dann sichern sondern etwas Arbeit in ein Konfigurationsmanagement-Tool stecken wie z.B. Ansible. Die jeweiligen Configs könnte man dann beispielsweise in ein git packen und per Ansible ausrollen.
Vorteile sind u.a.:
  • reproduzierbare Ergebnisse und weniger Fehler durch unterschiedliche Configs
  • Rollbacks im Fehlerfall sind einfacher indem man einfach im git einen Stand vorher nimmt
  • Änderungen an der Config sind im git nachvollziehbar
  • Fällt ein Switch aus, wird Ersatz verbaut und einfach die Config wieder ausgerollt
Man könnte dann z.B. einmal per Ansible eine grundlegende Config ausrollen für einheitliche Basics wie ntp, hardening, tacacs Anbindung usw. usf. und für die jeweiligen individuellen Configs wie einzelne Switchports etc dann pro Switch dafür eigene Configs.
Ja, so etwas einzuführen geht nicht an einem Nachmittag und erfordert ein wenig Einarbeitung aber "nach hinten raus" gewinnt man Zeit und es kann helfen, Fehler zu vermeiden.
Bei so einem Setup müsste man dann "nur noch" den git- sowie ansible-Server sichern.
 

RalphS

Lt. Commander
Dabei seit
Feb. 2015
Beiträge
1.340
Nur zur Sicherheit: daß man sich per ssh im Format username@hostname anmeldet ist bekannt? Prompts sind bei ssh optional. Also normalerweise, meine ich.

Der Weg über keys ist natürlich sinnvoll, aber auch dann muß man mit user@host kommen. Der Server weiß nicht von allein, wer da kommt.
 

IT-T0bi

Bisher: Zeuselus001
Cadet 2nd Year
Ersteller dieses Themas
Dabei seit
Dez. 2019
Beiträge
20
Vielen Dank erstmal für die Lösungen.
Hab ich mir schon fast gedacht, dass die Option mit PK am einfachsten wäre.
Ehrlich gesagt muss ich erstmal nachschauen, ob die Dell S-Serie PKs unterstützt.

@snaxilian
Gute Idee bezüglich des Crontabs, aber ich glaube leider kann die S-Serie von Dell das noch nicht. :/ In der N-Serie soll jedoch Python-Scripting möglich sein. Die Idee mit Ansible ist echt geil!

@RalphS
Ich glaube mich erinnern zu können, dass bei pLink ein IP-Parameter existiert bei den das Format user@host nicht gilt. Sonst ist klar username@hostname ;).
 
Top