Verbindung zu Junos-Geräten mit Junos PyEZ
Junos PyEZ ist ein Mikroframework für Python, mit dem Sie Junos-Geräte verwalten können. Junos PyEZ modelliert jedes Gerät als Instanz der jnpr.junos.device.Device-Klasse . Mit Device
der Klasse können Sie eine Verbindung zu einem Junos-Gerät über eine serielle Konsolenverbindung, telnet oder durch Einrichten einer NETCONF-Sitzung über SSH herstellen. Darüber hinaus unterstützt Junos PyEZ auch die Verbindung mit dem Gerät über eine Telnet- oder SSH-Verbindung mit einem Konsolenserver. Ein Konsolenserver, auch bekannt als Terminalserver, ist ein spezielles Gerät, das eine Netzwerkverbindung zum Out-of-Band-Management-Konsolenport eines Geräts bereitstellt.
Dieses Thema bietet einen Überblick über die von Junos PyEZ unterstützten Verbindungsmethoden und erklärt, wie die verschiedenen Methoden zur Verbindung mit einem Junos-Gerät verwendet werden. Die Junos PyEZ-Beispiele verwenden verschiedene Authentifizierungsmethoden, detaillierte Informationen zur Authentifizierung eines Benutzers finden Sie unter Authentifizieren von Junos PyEZ-Benutzern.
Überblick über die Verbindungsmethoden
Mit Junos PyEZ können Sie eine Verbindung zu einem Junos-Gerät über eine serielle Konsolenverbindung, ein Telnet oder eine NETCONF-Sitzung über SSH herstellen. Sie müssen eine serielle Konsolenverbindung verwenden, wenn Sie physisch mit dem CONSOLE-Port auf einem Gerät verbunden sind. Sie können Telnet oder SSH verwenden, um eine Verbindung zur Verwaltungsschnittstelle des Geräts oder zu einem Konsolenserver herzustellen, der mit dem KONSOLENport des Geräts verbunden ist. Darüber hinaus unterstützt Junos PyEZ ausgehende SSH-Verbindungen, bei denen das Junos-Gerät die Verbindung mit der Client-Managementanwendung initiiert.
Neue oder zeroisierte Geräte mit werksseitiger Standardkonfiguration erfordern den Zugriff über eine Konsolenverbindung. So können Sie junos PyEZ verwenden, um zunächst ein Gerät zu konfigurieren, das noch nicht für den Remotezugriff konfiguriert ist, indem Sie entweder eine serielle Konsolenverbindung verwenden, wenn Sie direkt mit dem Gerät verbunden sind, oder über Telnet oder SSH über einen Konsolenserver, der mit dem Gerät verbunden ist.
Junos PyEZ verwendet standardmäßig SSH, um eine Verbindung zu einem Gerät herzustellen. Um einen anderen Verbindungstyp anzugeben, müssen Sie den mode
Parameter in die Device
Argumentliste aufnehmen. Wenn Sie telnet zu einem Gerät möchten, fügen Sie das mode='telnet'
Argument ein. Um eine Verbindung mit einem Gerät über eine serielle Konsolenverbindung herzustellen, schließen Sie das mode='serial'
Argument an. Tabelle 1 fasst die Verbindungsmethoden von Junos PyEZ, deren Standardwerte für bestimmte Parameter, alle erforderlichen Junos OS-Konfigurationen und die Junos PyEZ-Version zusammen, in der die Unterstützung für diese Verbindungsmethode erstmals eingeführt wurde.
Verbindungsmodus |
Wert des Argumentes |
Standard-Port |
Erforderliche Junos OS-Konfiguration |
Erste unterstützte Junos PyEZ-Version |
---|---|---|---|---|
NETCONF über SSH (Standard) |
– |
830 |
[edit system services] netconf { ssh; } |
1.0.0 |
Serielle Konsolenverbindung |
Serielle |
/dev/ttyUSB0 |
– |
2.0.0 (*nix) 2.4.0 (Windows) |
Telnet zu Junos-Gerät |
Telnet |
23 |
[edit system services] telnet; |
2.0.0 |
Telnet über einen Konsolenserver |
Telnet |
23 |
– |
2.0.0 |
SSH über einen Konsolenserver |
– |
22 |
– |
2.2.0 |
Ausgehendes SSH |
– |
– |
[edit system services] outbound-ssh { ... } |
2.2.0 |
Bevor Sie über Telnet oder NETCONF über SSH auf die Verwaltungsschnittstelle eines Geräts zugreifen können, müssen Sie zunächst den entsprechenden Dienst auf Hierarchieebene [edit system services]
aktivieren. Weitere Informationen finden Sie unter Einrichten von Junos PyEZ Managed Nodes. Da Telnet Klartext-Kennwörter verwendet (wodurch eine potenzielle Sicherheitslücke entsteht), empfehlen wir, SSH zu verwenden.
Es liegt in der Verantwortung des Benutzers, die Authentifizierungsnachweise für Benutzername und Kennwort sicher zu erhalten, die für ihre Umgebung geeignet sind. Es ist best Practices, diese Authentifizierungsinformationen bei jedem Aufruf des Skripts einzufordern, anstatt die Anmeldeinformationen in einem unverschlüsselten Format zu speichern.
Junos PyEZ unterstützt die Verwendung von Kontextmanagern (with
... as
Syntax) für alle Verbindungsmethoden. Wenn Sie einen Kontext-Manager verwenden, ruft Junos PyEZ automatisch die open()
Verbindungen zum Gerät auf und close()
trennt sie vom Gerät. Wenn Sie keinen Kontext-Manager verwenden, müssen Sie die und close()
die open()
Methoden in Ihrer Anwendung explizit aufrufen. Wir empfehlen, dass Sie einen Kontext-Manager für Konsolenverbindungen verwenden, da der Kontext-Manager das Schließen der Verbindung automatisch übernimmt, und ein Ausfall beim Schließen der Verbindung zu unvorhersehbaren Ergebnissen führen kann.
Verstehen der Verbindungseigenschaften von Junos PyEZ
Wenn Sie eine Verbindung zu einem Junos-Gerät herstellen, speichert Junos PyEZ Informationen über die aktuelle Verbindung als Eigenschaften der Device
Instanz. Tabelle 2 zeigt die verfügbaren Verbindungseigenschaften.
Eigenschaft |
Beschreibung |
---|---|
|
Boolesche Angabe des aktuellen Verbindungszustands. Kehrt bei Verbindung zurück |
|
Zeichenfolge, die den Hostnamen des Geräts angibt, mit dem die Anwendung verbunden ist. |
|
Boolesche Rückkehr |
|
Ganzzahl oder Zeichenfolge, die den für die Verbindung verwendeten Port angibt. |
|
Zeichenfolge, die den Namen der Routing-Engine angibt, mit der die Anwendung verbunden ist. |
|
Ganzzahl, die den RPC-Timeout-Wert in Sekunden angibt. |
|
Ganzzahl, die die Anzahl der Sekunden seit dem Start der aktuellen Routing-Engine darstellt. Diese Eigenschaft ist ab Junos PyEZ Version 2.1.5 verfügbar. |
|
Zeichenfolge, die den Benutzer angibt, der auf das Junos-Gerät zutritt. |
Beispielsweise können Sie nach der Verbindung mit einem Gerät die connected
Eigenschaft abfragen, um den aktuellen Zustand der Verbindung zurückzugeben. A SessionListener
überwacht die Sitzung und reagiert auf Übertragungsfehler, indem eine TransportError
Ausnahme ausgelöst und die Device.connected
Eigenschaft auf False
festgelegt wird.
Der folgende Beispielcode druckt den Wert der connected
Eigenschaft nach der Verbindung mit einem Junos-Gerät und erneut nach dem Schließen der Sitzung.
from jnpr.junos import Device dev = Device(host='router.example.net') dev.open() print (dev.connected) dev.close() print (dev.connected)
Wenn Sie das Programm ausführen, kehrt die connected
Eigenschaft zurück True
, während die Anwendung mit dem Gerät verbunden ist, und kehrt nach dem Schließen der Verbindung zurück False
.
user@host:~$ python connect.py True False
Verbinden Sie sich mit einem Gerät über SSH
Die Junos PyEZ-Klasse Device
unterstützt die Verwendung von SSH zur Verbindung mit einem Junos-Gerät. Sie können eine NETCONF-Sitzung über SSH mit der Verwaltungsschnittstelle des Geräts einrichten oder eine SSH-Verbindung mit einem Konsolenserver herstellen, der direkt mit dem KONSOLENport des Geräts verbunden ist. Der SSH-Server muss in der Lage sein, den Benutzer mithilfe von Standard-SSH-Authentifizierungsmechanismen zu authentifizieren, wie in Authenticate Junos PyEZ Users beschrieben. Um eine NETCONF-Sitzung über SSH einzurichten, müssen Sie auch die in Junos PyEZ Managed Nodes festgelegten Anforderungen erfüllen.
Junos PyEZ fragt die Standard-SSH-Konfigurationsdatei automatisch bei ~/.ssh/config ab, falls eine vorhanden ist. Bei der Verwendung von SSH zur Verbindung mit einem Junos-Gerät oder mit einem mit dem Gerät verbundenen Konsolenserver versucht Junos PyEZ zunächst eine SSH-basierte Authentifizierung mit öffentlichem Schlüssel und dann die kennwortbasierte Authentifizierung. Wenn eine kennwortbasierte Authentifizierung verwendet wird, wird das angegebene Kennwort als Gerätekennwort verwendet. Wenn SSH-Schlüssel verwendet werden, wird das angegebene Kennwort als Passphrase zum Entsperren des privaten Schlüssels verwendet. Wenn der private SSH-Schlüssel über eine leere Passphrase verfügt, ist kein Kennwort erforderlich. Private SSH-Schlüssel mit leeren Passphrasen werden jedoch nicht empfohlen.
Um eine NETCONF-Sitzung über SSH mit einem Junos-Gerät einzurichten und die Gerätedaten in einer Junos PyEZ-Anwendung mit Python 3 auszudrucken:
Das Ganze des Beispielprogramms wird hier vorgestellt:
import sys from getpass import getpass from jnpr.junos import Device from jnpr.junos.exception import ConnectError hostname = input("Device hostname: ") junos_username = input("Junos OS username: ") junos_password = getpass("Junos OS or SSH key password: ") dev = Device(host=hostname, user=junos_username, passwd=junos_password) try: dev.open() except ConnectError as err: print ("Cannot connect to device: {0}".format(err)) sys.exit(1) except Exception as err: print (err) sys.exit(1) print (dev.facts) dev.close()
Alternativ können Sie einen Kontext-Manager verwenden, wenn Sie eine Verbindung zum Gerät herstellen, der die open()
Und-Methoden close()
automatisch aufruft. Zum Beispiel:
import sys from getpass import getpass from jnpr.junos import Device from jnpr.junos.exception import ConnectError hostname = input("Device hostname: ") junos_username = input("Junos OS username: ") junos_password = getpass("Junos OS or SSH key password: ") try: with Device(host=hostname, user=junos_username, passwd=junos_password) as dev: print (dev.facts) except ConnectError as err: print ("Cannot connect to device: {0}".format(err)) sys.exit(1) except Exception as err: print (err) sys.exit(1)
Junos PyEZ ermöglicht einem Client auch die Verbindung zu einem Junos-Gerät über eine SSH-Verbindung mit einem Konsolenserver. In diesem Fall müssen Sie die Anmeldeinformationen für den Konsolenserver angeben, indem Sie die Argumente und cs_passwd
die cs_user
Argumente in die Device
Argumentliste einbeziehen. Wenn SSH-Schlüssel verwendet werden, setzen Sie das cs_passwd
Argument auf die Variable, die die Passphrase für den privaten Schlüssel enthält.
Der Konsolenserver verbindet sich über eine serielle Verbindung mit dem Junos-Gerät, was langsam sein kann. Junos PyEZ-Verbindungen über einen Konsolenserver haben einen Standard-Timeout-Wert von 0,5 Sekunden. Infolgedessen müssen Sie möglicherweise das Timeout-Intervall für die Verbindung erhöhen, indem Sie das Device
timeout=seconds
Argument einbeziehen, um ausreichend Zeit für die Clientanwendung zum Herstellen der Verbindung einzuräumen.
Das folgende Python 3-Beispiel authentifiziert sich mit dem Konsolenserver und dann mit dem Junos-Gerät. Das Timeout der Verbindung wird auf sechs Sekunden festgelegt, sodass der Client ausreichend Zeit hat, um die Verbindung herzustellen.
import sys from getpass import getpass from jnpr.junos import Device from jnpr.junos.exception import ConnectError hostname = input("Console server hostname: ") cs_username = input("Console server username: ") cs_password = getpass("Console server or SSH key password: ") junos_username = input("Junos OS username: ") junos_password = getpass("Junos OS password: ") try: with Device(host=hostname, user=junos_username, passwd=junos_password, cs_user=cs_username, cs_passwd=cs_password, timeout=6) as dev: print (dev.facts) except ConnectError as err: print ("Cannot connect to device: {0}".format(err)) sys.exit(1) except Exception as err: print (err) sys.exit(1)
Junos PyEZ fragt die Standard-SSH-Konfigurationsdatei automatisch bei ~/.ssh/config ab, falls eine vorhanden ist. Sie können jedoch beim Erstellen der Geräteinstanz eine andere SSH-Konfigurationsdatei angeben, indem Sie den ssh_config
Parameter in die Device
Argumentliste einbeziehen. Zum Beispiel:
ssh_config_file = "~/.ssh/config_dc" dev = Device(host='198.51.100.1', ssh_config=ssh_config_file)
Junos PyEZ bietet auch Unterstützung für ProxyClient, mit dem Sie über einen Vermittler-Host, der Netcat unterstützt, auf ein Zielgerät zugreifen können. Dies ist nützlich, wenn Sie sich nur über den Zwischenhost beim Zielgerät anmelden können.
Fügen Sie zur Konfiguration von ProxyClient die entsprechenden Informationen in die SSH-Konfigurationsdatei hinzu. Zum Beispiel:
[user1@server ~]$ cat ~/.ssh/config Host 198.51.100.1 User user1 ProxyCommand ssh -l user1 198.51.100.2 nc %h 22 2>/dev/null
Verbindung zu einem Gerät über ausgehendes SSH
Sie können ein Junos-Gerät so konfigurieren, dass es eine TCP/IP-Verbindung mit einer Client-Managementanwendung initiiert, die blockiert wird, wenn der Client versucht, die Verbindung zu initiieren (z. B. wenn sich das Gerät hinter einer Firewall befindet). Die outbound-ssh
Konfiguration weist das Gerät an, eine TCP/IP-Verbindung mit der Client-Managementanwendung zu erstellen und die Identität des Geräts weiterzuleiten. Sobald die Verbindung hergestellt ist, fungiert die Verwaltungsanwendung als Client und initiiert die SSH-Sequenz, und das Gerät fungiert als Server und authentifiziert den Client.
Es gibt keinen Initiationsbefehl mit ausgehendem SSH. Sobald ausgehendes SSH konfiguriert und zugesagt wurde, beginnt das Gerät, eine ausgehende SSH-Verbindung basierend auf der zugesagten Konfiguration zu initiieren. Das Gerät versucht wiederholt, diese Verbindung zu erstellen, bis sie erfolgreich ist. Wenn die Verbindung zwischen dem Gerät und der Client-Managementanwendung unterbrochen wird, versucht das Gerät erneut, eine neue ausgehende SSH-Verbindung zu erstellen, bis dies erfolgreich ist. Diese Verbindung wird aufrechterhalten, bis der ausgehende SSH-Stanza aus der Konfiguration entfernt wird.
Um das Junos-Gerät für ausgehende SSH-Verbindungen zu konfigurieren, fügen Sie die outbound-ssh
Anweisung auf hierarchieebene [edit system services]
ein. Im folgenden Beispiel versucht das Junos-Gerät, eine Verbindung zum Host bei 198.51.100.101 am Port 2200 zu initiieren:
user@router1> show configuration system services outbound-ssh client outbound-ssh { device-id router1; secret "$9$h1/ceWbs4UDkGD/Cpu1I-Vb"; ## SECRET-DATA services netconf; 198.51.100.101 port 2200; }
Um eine Verbindung mit dem Junos-Gerät mit ausgehendem SSH herzustellen, setzt die Junos PyEZ-Anwendung das sock_fd
Argument im Device
Konstruktor gleich dem Dateideskriptor eines vorhandenen Sockets und lässt entweder das host
Argument aus, oder setzt es auf None
.
Das folgende Junos PyEZ-Beispiel hört den konfigurierten TCP-Port für eingehende SSH-Sitzungen von Junos-Geräten ab. Die Anwendung akzeptiert eine eingehende Verbindung und ruft den Dateideskriptor des Sockets für diese Verbindung ab, die für den Wert des sock_fd
Arguments verwendet wird. Die Clientanwendung stellt die SSH-Verbindung mit dem Gerät her, erfasst und druckt die Fakten des Geräts, trennt sich vom Gerät und wartet auf weitere Verbindungen.
import socket from jnpr.junos import Device from jnpr.junos.exception import ConnectError from getpass import getpass from pprint import pprint """ Listen on TCP port 2200 for incoming SSH session with a Junos device. Upon connecting, collect and print the devices facts, then disconnect from that device and wait for more connections. """ def launch_junos_proxy(client, addr): val = { 'MSG-ID': None, 'MSG-VER': None, 'DEVICE-ID': None } msg = '' count = 3 while len(msg) < 100 and count > 0: c = client.recv(1) if c == '\r': continue if c == '\n': count -= 1 if msg.find(':'): (key, value) = msg.split(': ') val[key] = value msg = '' else: msg += str(c) print('MSG %s %s %s' % (val['MSG-ID'], val['MSG-VER'], val['DEVICE-ID'])) return client.fileno() def main(): PORT = 2200 junos_username = input('Junos OS username: ') junos_password = getpass('Junos OS password: ') s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(('', PORT)) s.listen(5) print('\nListening on port %d for incoming sessions ...' % (PORT)) sock_fd = 0 while True: client, addr = s.accept() print('\nGot a connection from %s:%d' % (addr[0], addr[1])) sock_fd = launch_junos_proxy(client, addr) print('Logging in ...') try: with Device(host=None, sock_fd=sock_fd, user=junos_username, passwd=junos_password) as dev: pprint(dev.facts) except ConnectError as err: print ("Cannot connect to device: {0}".format(err)) if __name__ == "__main__": main()
user@server:~$ python3 junos-pyez-outbound-ssh.py Junos OS username: user Junos OS password: Listening on port 2200 for incoming sessions ... Got a connection from 10.10.0.5:57881 MSG DEVICE-CONN-INFO V1 router1 Logging in ... {'2RE': True, 'HOME': '/var/home/user', 'RE0': {'last_reboot_reason': 'Router rebooted after a normal shutdown.', 'mastership_state': 'master', 'model': 'RE-MX-104', 'status': 'OK', 'up_time': '2 days, 6 hours, 22 minutes, 22 seconds'}, 'RE1': {'last_reboot_reason': 'Router rebooted after a normal shutdown.', 'mastership_state': 'backup', 'model': 'RE-MX-104', 'status': 'OK', 'up_time': '2 days, 6 hours, 22 minutes, 12 seconds'}, 'RE_hw_mi': False, 'current_re': ['re0', 'master', 'node', 'fwdd', 'member', 'pfem'], 'domain': 'example.com', 'fqdn': 'router1.example.com', 'hostname': 'router1', ...
Detaillierte Informationen zur Konfiguration ausgehender SSH auf Junos-Geräten finden Sie unter Konfigurieren des ausgehenden SSH-Service.
Mit Telnet eine Verbindung zu einem Gerät herstellen
Die Junos PyEZ-Klasse Device
unterstützt die Verbindung zu einem Junos-Gerät über Telnet, das einen unverschlüsselten Zugriff auf das Netzwerkgerät bietet. Sie können telnet zur Verwaltungsschnittstelle des Geräts oder zu einem Konsolenserver, der direkt mit dem KONSOLENport des Geräts verbunden ist. Sie müssen den Telnet-Dienst auf der [edit system services]
Hierarchieebene auf allen Geräten konfigurieren, die Zugriff auf die Verwaltungsschnittstelle benötigen. Durch den Zugriff auf das Gerät über einen Konsolenserver können Sie zunächst ein neues oder zeroisiertes Gerät konfigurieren, das noch nicht für den Remotezugriff konfiguriert ist.
Um Junos PyEZ zum Telnet zu einem Junos-Gerät zu verwenden, müssen Sie in die Argumentliste aufgenommen mode='telnet'
werden und optional den port
Parameter angeben, um einen Port anzugeben.Device
Wenn Sie den Parameter angebenmode='telnet'
, aber den port
Parameter auslassen, ist der Wert für port
standardmäßig 23. Wenn sich die Anwendung über einen Konsolenserver verbindet, geben Sie den Port an, über den sich der Konsolenserver mit dem Junos-Gerät verbindet.
So verwenden Sie Junos PyEZ zum Telnet auf einem Junos-Gerät und drucken Sie die Gerätedaten in einer Junos PyEZ-Anwendung mit Python 3 aus:
Das Ganze des Beispielprogramms wird hier vorgestellt:
import sys from getpass import getpass from jnpr.junos import Device hostname = input("Device hostname: ") junos_username = input("Junos OS username: ") junos_password = getpass("Junos OS password: ") dev = Device(host=hostname, user=junos_username, passwd=junos_password, mode='telnet', port='23') try: dev.open() except Exception as err: print (err) sys.exit(1) print (dev.facts) dev.close()
Alternativ können Sie bei einer Verbindung mit dem Gerät einen Kontextmanager verwenden, der das Öffnen und Schließen der Verbindung übernimmt. Zum Beispiel:
import sys from getpass import getpass from jnpr.junos import Device hostname = input("Device hostname: ") junos_username = input("Junos OS username: ") junos_password = getpass("Junos OS password: ") try: with Device(host=hostname, user=junos_username, passwd=junos_password, mode='telnet', port='23') as dev: print (dev.facts) except Exception as err: print (err) sys.exit(1)
Wenn Sie sich mit einem Konsolenserver verbinden, der eine Bannernachricht sendet, müssen Sie in einigen Fällen die Enter-Taste drücken, nachdem die Nachricht die Anmeldeeingabe erreicht hat. Wenn eine Junos PyEZ-Anwendung eine Telnet-Sitzung mit einem Konsolenserver öffnet, bei der der Benutzer die Enter-Taste nach einer Bannernachricht drücken muss, kann es sein, dass die Anwendung die Anmeldeaufforderung nicht erhält, wodurch die Verbindung hängen bleibt.
Ab Junos PyEZ Version 2.6.2 verarbeitet Junos PyEZ automatisch das Konsolenserver-Banner. In Junos PyEZ Releases 2.1.0 bis 2.6.1 kann eine Junos PyEZ-Anwendung in die Argumentliste aufgenommen werden, um Telnet an einen Konsolenserver zu senden console_has_banner=True
, der Device
eine Banner-Nachricht sendet.
dev = Device(host=hostname, user=username, passwd=password, mode='telnet', console_has_banner=True)
Wenn Sie das console_has_banner=True
Argument einbeziehen und die Anwendung bei der ersten Verbindung keine Anmeldeaufforderung erhält, wartet die Anwendung 5 Sekunden und gibt dann ein Newline-Zeichen (\n
) aus, sodass der Konsolenserver die Anmeldeeingabeaufforderung ausgibt. Wenn Sie das Argument weglassen und die Verbindung hängt, gibt die Anwendung stattdessen die <close-session/>
RPC aus, um die Verbindung zu beenden.
Verbindung zu einem Gerät über eine serielle Konsolenverbindung herstellen
Mit der Junos PyEZ-Klasse Device
können Sie eine Verbindung zu einem Junos-Gerät über eine serielle Konsolenverbindung herstellen. Dies ist nützlich, wenn Sie zunächst ein neues oder zeroisiertes Gerät konfigurieren müssen, das noch nicht für den Remotezugriff konfiguriert ist. Um diese Verbindungsmethode zu verwenden, müssen Sie über den KONSOLENport physisch mit dem Gerät verbunden sein. Detaillierte Anweisungen zur Verbindung mit dem KONSOLENport auf Ihrem Gerät finden Sie in der Hardwaredokumentation für Ihr jeweiliges Gerät.
Junos PyEZ unterstützt die Verwendung von Kontextmanagern für serielle Konsolenverbindungen. Es wird empfohlen, einen Kontext-Manager für Konsolenverbindungen zu verwenden, da der Kontextmanager das Öffnen und Schließen der Verbindung automatisch übernimmt. Wenn die Verbindung nicht geschlossen wird, kann dies zu unvorhersehbaren Ergebnissen führen.
Um junos PyEZ zur Verbindung mit einem Junos-Gerät über eine serielle Konsolenverbindung zu verwenden, müssen Sie in die Argumentliste aufgenommen mode='serial'
werden und optional den port
Parameter angeben, um einen Port anzugeben.Device
Wenn Sie den Parameter angebenmode='serial'
, aber auslassenport
, wird der Wert für port
die Standardeinstellungen auf /dev/ttyUSB0
.
Um eine Verbindung zu einem Junos-Gerät über eine serielle Konsolenverbindung herzustellen und auch eine Konfiguration auf dem Gerät in einer Junos PyEZ-Anwendung mit Python 3 zu laden und zu bestätigen:
Das Ganze des Beispielprogramms wird hier vorgestellt:
import sys from getpass import getpass from jnpr.junos import Device from jnpr.junos.utils.config import Config junos_username = input("Junos OS username: ") junos_password = getpass("Junos OS password: ") try: with Device(mode='serial', port='port', user=junos_username, passwd=junos_password) as dev: print (dev.facts) cu = Config(dev) cu.lock() cu.load(path='/tmp/config_mx.conf') cu.commit() cu.unlock() except Exception as err: print (err) sys.exit(1)