Ran an den Switch (und Router)
mit Python und Netmiko!

02.04.2021


Da der Trend ja in Richtung Automatisierung geht und ich sowieso schon seit den 1980ern ein wenig programmiere, habe ich mir Python geschnappt und eruiert, wie man damit auf die Cisco-CLI zugreifen kann.


Es gibt verschiedene Libraries für diesen Zweck, wie netmiko, napalm und nornir. Ich habe erst mal mit netmiko angefangen.


In meiner Arbeitsumgebung erfolgt der Zugriff auf die Network Devices nicht direkt, sondern über einen Jumphost. Der Weg sieht dann so aus, dass ich in meinen Programmen erst mal eine Verbindung zum Jumphost aufbaue über SSH und von dort aus weiterspringe auf ein Cisco-Device, dort etwas mache, mich vom Cisco-Device abmelde, eventuell auf das nächste Cisco-Device springe, etc. und mich dann schließlich vom SSH-Jumphost wieder abmelde.


Da netmiko eine gewisse ‚Eigenintelligenz‘ hat, muss man der Library immer mitteilen, wenn man zwischen verschiedenen Betriebssystem-Umgebungen (bei mir: Linux und Cisco IOS) wechselt. Manchmal sind dabei nicht reproduzierbare Effekte aufgetreten, die meine Python-Anwendungen ins Straucheln bringen.


Da ich es mühsam fand, mir alle Hinweise für die Umschiffung bzw. Milderung der Probleme zusammenzusuchen, will ich hier mal Python-Code vorstellen, der bei mir inzwischen ganz brauchbar funktioniert. Damit das nicht zu lang wird, mache ich das über mehrere Artikel hinweg.


In diesem Artikel möchte ich kurz die verwendete netmiko Python-Library vorstellen. Sie wurde von Kirk Byers entwickelt und lässt sich mit einer Vielzahl von Plattformen verwenden, wie zum Beispiel Linux, Cisco (IOS/IOS-XE/NX-OS), JunOS, F5, Citrix ADC. Eine Liste der unterstützten Plattformen findet sich hier. netmiko ist auf Pypi zu finden und kann leicht über den pip Packet Installer installiert werden mit pip install netmiko. Ich verwende zur Zeit die Version 3.3.3.


Zur Nutzung der Library muss man diese in sein Python-Programm importieren, Ich mache dies mit dem folgenden Befehl am Anfang des Quellcodes:

from netmiko import ConnectHandler

from netmiko import redispatch


Je nach Anwendungsfall wird man vielleicht noch mehr Teile aus dieser Library importieren.


Im diesem Artikel stelle ich den Login auf dem SSH-Jumphost (Linux) vor.


Suchbegriffe: automatisierung