Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Verbinden Sie sich mit Junos PyEZ mit Junos Geräten

Verbinden Sie sich mit einem Junos-Gerät oder einem angeschlossenen Konsolenserver über verschiedene Verbindungsmethoden und Protokolle in einer Junos PyEZ-Anwendung.

Junos PyEZ ist ein Microframework für Python, mit dem Sie Junos-Geräte verwalten können. Junos PyEZ modelliert jedes Gerät als Instanz der Klasse jnpr.junos.device.Device. Der Device Kurs ermöglicht es Ihnen, eine Verbindung zu einem Junos-Gerät über eine serielle Konsolenverbindung, Telnet oder eine NETCONF-Sitzung über SSH herzustellen. Junos PyEZ unterstützt auch die Verbindung mit dem Gerät über eine Telnet- oder SSH-Verbindung zu einem Konsolenserver. Ein Konsolenserver, auch Terminalserver genannt, ist ein spezielles Gerät, das eine Netzwerkverbindung zum Out-of-Band-Port der Verwaltungskonsole eines Geräts bereitstellt. Darüber hinaus können Sie mit Junos PyEZ eine Verbindung zu einem Junos-Gerät über ein Zwischengerät wie eine Bastion oder einen Jump-Host herstellen.

Dieses Thema bietet einen Überblick über die von Junos PyEZ unterstützten Verbindungsmethoden und erläutert, wie Sie die verschiedenen Methoden zum Herstellen einer Verbindung mit einem Junos-Gerät verwenden. In den Junos PyEZ-Beispielen werden verschiedene Authentifizierungsmethoden verwendet, aber detaillierte Informationen zur Authentifizierung eines Benutzers finden Sie unter Authentifizieren von Junos PyEZ-Benutzern.

Übersicht über Verbindungsmethoden

Mit Junos PyEZ können Sie eine Verbindung zu einem Junos-Gerät über eine serielle Konsolenverbindung, Telnet oder eine NETCONF-Sitzung über SSH herstellen. Sie müssen eine serielle Konsolenverbindung verwenden, wenn Sie physisch mit dem CONSOLE-Port eines Geräts 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 CONSOLE-Port des Geräts verbunden ist. Junos PyEZ unterstützt auch SSH-Verbindungen zu einem Gerät über eine Bastion oder einen Jump-Host. Darüber hinaus unterstützt Junos PyEZ ausgehende SSH-Verbindungen, bei denen das Junos-Gerät die Verbindung mit der Client-Management-Anwendung initiiert.

Neue oder auf Null gesetzte Geräte mit werkseitigen Standardkonfigurationen erfordern den Zugriff über eine Konsolenverbindung. Sie können Junos PyEZ verwenden, um zunächst ein Gerät zu konfigurieren, das noch nicht für den Remotezugriff konfiguriert ist. Sie können entweder eine serielle Konsolenverbindung verwenden, wenn Sie direkt mit dem Gerät verbunden sind, oder Sie können Telnet oder SSH über einen Konsolenserver verwenden, der mit dem Gerät verbunden ist.

Standardmäßig verwendet Junos PyEZ 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. Um Telnet mit einem Gerät zu verbinden, schließen Sie das mode='telnet' Argument ein. Um eine Verbindung zu einem Gerät über eine serielle Konsolenverbindung herzustellen, schließen Sie das mode='serial' Argument ein. Tabelle 1 fasst die Junos PyEZ-Verbindungsmethoden, ihre Standardwerte für bestimmte Parameter und alle erforderlichen Junos OS-Konfigurationen zusammen.

Tabelle 1: Junos PyEZ-Verbindungsmodi

Verbindungsmodus

Wert des mode Arguments

Standard-Port

Erforderliche Junos OS Konfiguration

NETCONF über SSH (Standard)

–

830

[edit system services]
netconf {
    ssh;
}

Serielle Konsolenverbindung

seriell

/dev/ttyUSB0

–

Telnet zu Junos-Gerät

Telnet

23

[edit system services]
telnet;

Telnet über einen Konsolenserver

Telnet

23

–

SSH über einen Konsolenserver

–

22

–

SSH über einen Jump-Host

–

22

[edit system services]
netconf {
    ssh;
}

Ausgehendes SSH

–

–

[edit system services]
outbound-ssh {     
    ...
}
Hinweis:

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 Junos verwalteten PyEZ-Knoten. Da Telnet Klartextkennwörter verwendet (wodurch eine potenzielle Sicherheitslücke entsteht), wird die Verwendung von SSH empfohlen.

Hinweis:

Rufen Sie Anmeldeinformationen auf sichere Weise ab, die für Ihre Umgebung geeignet ist. Es empfiehlt sich, bei jeder Ausführung des Skripts zur Eingabe von Anmeldeinformationen aufzufordern, anstatt sie in einem unverschlüsselten Format zu speichern.

Junos PyEZ unterstützt die Verwendung von Kontext-Managern (with ... as Syntax) für alle Verbindungsmethoden. Wenn Sie einen Kontext-Manager verwenden, ruft Junos PyEZ automatisch die open() close() und-Methoden auf, um eine Verbindung mit dem Gerät herzustellen und die Verbindung zu dem Gerät zu trennen. Wenn Sie keinen Kontext-Manager verwenden, müssen Sie die open() und-Methoden close() in Ihrer Anwendung explizit aufrufen. Es wird empfohlen, einen Kontext-Manager für Konsolenverbindungen zu verwenden. Der Kontext-Manager verarbeitet das Schließen der Verbindung automatisch, und ein Nichtschließen der Verbindung kann zu unvorhersehbaren Ergebnissen führen.

Grundlegendes zu den 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. In Tabelle 2 sind die verfügbaren Verbindungseigenschaften aufgeführt.

Tabelle 2: Geräteeigenschaften

Eigenschaft

Typ

Beschreibung

connected

Boolescher Wert

Aktueller Status der Verbindung. Gibt zurück, wenn die Verbindung True hergestellt ist.

hostname

Zeichenfolge

Hostname des Geräts, mit dem die Anwendung verbunden ist.

master

Boolescher Wert

Gibt zurück True , wenn die Routing-Engine, mit der die Anwendung verbunden ist, die primäre Routing-Engine ist.

port

Integer oder String

Für die Verbindung verwendeter Port.

re_name

Zeichenfolge

Name der Routing-Engine, mit der die Anwendung verbunden ist.

timeout

Ganzzahl

RPC-Zeitüberschreitungswert in Sekunden.

uptime

Ganzzahl

Anzahl der Sekunden seit dem Start der aktuellen Routing-Engine.

user

Zeichenfolge

Benutzer, der auf das Junos-Gerät zugreift.

Nachdem Sie beispielsweise eine Verbindung mit einem Gerät hergestellt haben, können Sie die connected Eigenschaft abfragen, um den aktuellen Status der Verbindung zurückzugeben. A SessionListener überwacht die Sitzung und reagiert auf Transportfehler, indem es eine TransportError Ausnahme auslöst und die Device.connected Eigenschaft auf Falsesetzt.

Der folgende Beispielcode gibt den Wert der connected Eigenschaft nach der Verbindung mit einem Junos-Gerät und erneut nach dem Schließen der Sitzung aus.

Wenn Sie das Programm ausführen, wird die connected Eigenschaft zurückgegeben True , während die Anwendung mit dem Gerät verbunden ist, und zurückgegeben False , nachdem die Verbindung geschlossen wurde.

Herstellen einer Verbindung mit einem Gerät über SSH

Die Junos PyEZ-Klasse Device unterstützt die Verwendung von SSH für die Verbindung mit einem Junos-Gerät. Junos PyEZ unterstützt die folgenden Verbindungen:

  • Direkte Verbindung zur Verwaltungsschnittstelle des Geräts

  • Stellen Sie eine Verbindung über einen Konsolenserver her, der direkt mit dem CONSOLE-Port des Geräts verbunden ist

  • Verbindung über eine Bastion oder einen Jump-Host herstellen

Der SSH-Server muss in der Lage sein, den Benutzer mithilfe von Standard-SSH-Authentifizierungsmechanismen zu authentifizieren, wie unter Authentifizieren von Junos PyEZ-Benutzern beschrieben. Um eine NETCONF-Sitzung über SSH einzurichten, müssen Sie auch die Anforderungen erfüllen, die unter Einrichten von Junos PyEZ Managed Nodes beschrieben sind.

Wenn SSH zum Herstellen einer Verbindung mit einem Gerät verwendet wird, versucht Junos PyEZ zuerst die auf dem öffentlichen SSH-Schlüssel basierende SSH-Authentifizierung und dann die kennwortbasierte Authentifizierung. Wenn die kennwortbasierte Authentifizierung verwendet wird, wird das angegebene Kennwort als Gerätekennwort verwendet. Wenn SSH-Schlüssel verwendet werden, ist das angegebene Passwort die Passphrase zum Entsperren des privaten Schlüssels. Sie müssen kein Kennwort angeben, wenn Sie den Schlüssel in einen SSH-Schlüsselagenten laden oder wenn der private SSH-Schlüssel eine leere Passphrase hat. Wir empfehlen jedoch nicht, private SSH-Schlüssel mit leeren Passphrasen zu verwenden.

Junos PyEZ fragt automatisch die Standard-SSH-Konfigurationsdatei unter ~/.ssh/config ab, falls vorhanden. Junos PyEZ verwendet alle relevanten Einstellungen in der SSH-Konfigurationsdatei, die nicht von den Device Argumenten überschrieben werden, wie z. B. der Benutzer oder die Identitätsdatei. Um eine andere SSH-Konfigurationsdatei zu verwenden, legen Sie den Dateipfad ssh_config fest, wenn Sie Devicedefinieren. Zum Beispiel:

Ab Junos PyEZ Version 2.7.2 kann ein Junos PyEZ-Client die SSH-Hostschlüsselüberprüfung aktivieren, wenn er eine Verbindung zu einem Junos-Gerät herstellt. Der Client überprüft die Identität des Remotegeräts, indem er überprüft, ob der Fingerabdruck des Hostschlüssels des Geräts mit einem vertrauenswürdigen Schlüssel in der known_hosts Datei des Clients übereinstimmt. Wenn der angezeigte Hostschlüssel nicht mit einem vertrauenswürdigen Schlüssel übereinstimmt, wird die Verbindung abgelehnt. Nutzen Sie ggf. die Hostschlüsselüberprüfung, um Man-in-the-Middle-Angriffe zu verhindern.

Standardmäßig deaktiviert Junos PyEZ die SSH-Hostschlüsselüberprüfung und lässt die Verbindung zu, ohne dass der öffentliche Schlüssel des Servers in der known_hosts Datei des Clients registriert werden muss. Um die Überprüfung des Hostschlüssels zu aktivieren, schließen Sie ein hostkey_verify=True , wenn Sie Device. Wenn Sie die Hostschlüsselüberprüfung aktivieren, müssen Sie den Hostschlüssel des Geräts in die known_hosts Datei laden , bevor Sie eine Verbindung zum Gerät herstellen. Andernfalls schlägt die Verbindung fehl.

In den folgenden Abschnitten werden die verschiedenen Methoden zum Herstellen einer Verbindung mit einem Gerät über SSH erläutert.

Direktes Herstellen einer Verbindung mit einem Gerät

Mit Junos PyEZ können Sie eine direkte Verbindung zu einem Gerät herstellen, auf dem Junos OS ausgeführt wird, oder mit einem Gerät, auf dem Junos OS Evolved ausgeführt wird. Wenn Sie das Device Objekt instanziieren, geben Sie den Hostnamen oder die IP-Adresse des Zielgeräts und alle erforderlichen Benutzeranmeldeinformationen an.

Wenn der Junos PyEZ-Client die Verbindung mithilfe einer bestimmten lokalen Quell-IP-Adresse auf dem Konfigurationsverwaltungsserver (Configuration Management Server, CMS) herstellen muss, können Sie das bind_addr Argument zur Angabe der Adresse angeben. Das Festlegen der lokalen Quelladresse für eine Verbindung kann z. B. erforderlich sein, wenn das CMS mehrere Netzwerkschnittstellen und IP-Adressen verwendet und nur eine Teilmenge der Adressen vom Netzwerkgerät aus erreichbar ist.

So erstellen Sie eine Junos PyEZ-Anwendung, die eine NETCONF-Sitzung über SSH mit einem Junos-Gerät einrichtet und die Gerätefakten ausgibt:

  1. Importieren Sie die Klasse und alle anderen Module oder Objekte, die Device für Ihre Aufgaben erforderlich sind.

  2. Erstellen Sie die Geräteinstanz und geben Sie den Hostnamen, alle für die Authentifizierung erforderlichen Parameter und alle optionalen Parameter an.

  3. (Optional) Wenn das Junos-Gerät NETCONF auf einem anderen Port als dem Standardport (830) konfiguriert, schließen Sie das port Argument ein und geben Sie den Port an.

  4. (Optional) Wenn Sie die lokale Quelladresse angeben müssen, die zum Herstellen der Verbindung verwendet werden soll, fügen Sie das bind_addr Argument hinzu und geben Sie die zu verwendende IP-Adresse an.

  5. Stellen Sie eine Verbindung mit dem Gerät her, indem Sie beispielsweise die open() Methode aufrufen:

  6. Drucken Sie die Gerätefakten aus.

  7. Schließen Sie nach dem Ausführen aller erforderlichen Aufgaben die Verbindung zum Gerät.

Das Beispielprogramm in seiner Gesamtheit (optionale Parameter weggelassen) wird hier vorgestellt:

Alternativ können Sie einen Kontextmanager verwenden, wenn Sie eine Verbindung zum Gerät herstellen. Der Kontext-Manager ruft automatisch die open() close() und-Methoden auf. Zum Beispiel:

Verbinden mit einem Gerät über einen Konsolenserver

Ein Junos PyEZ-Client kann über eine SSH-Verbindung zu einem Konsolenserver eine Verbindung zu einem Junos-Gerät herstellen. In diesem Fall müssen Sie die Anmeldeinformationen sowohl für den Konsolenserver als auch für das Junos-Gerät angeben. Fügen Sie in der Device Argumentliste die Anmeldeinformationen des Konsolenservers in die cs_user Argumente and cs_passwd ein. 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. Legen Sie außerdem das port Argument auf den TCP-Port fest, der dem TTY-Gerät zugeordnet ist, falls zutreffend.

Der Konsolenserver stellt eine Verbindung zum Junos-Gerät über eine serielle Verbindung her, die langsam sein kann. Junos PyEZ-Verbindungen über einen Konsolenserver haben einen Standardwert für das Verbindungstimeout von 0,5 Sekunden. Damit die Clientanwendung genügend Zeit zum Herstellen der Verbindung hat, müssen Sie möglicherweise das Verbindungstimeoutintervall erhöhen, indem Sie das timeout=seconds Argument einbeziehen.

Im folgenden Junos PyEZ-Beispiel wird die Authentifizierung beim Konsolenserver und dann beim Junos-Gerät durchgeführt. Das Verbindungstimeout wird auf sechs Sekunden festgelegt, damit der Client genügend Zeit hat, die Verbindung herzustellen.

Verbinden mit einem Gerät über eine Bastion oder einen Jump-Host

Mit Junos PyEZ können Sie über einen zwischengeschalteten Host (Bastion- oder Jump-Host) auf ein Zielgerät zugreifen. Möglicherweise müssen Sie eine Bastion oder einen Jump-Host verwenden, wenn Sie sich nicht direkt beim Zielgerät anmelden können. Das Gerät könnte sich beispielsweise hinter einer Firewall befinden.

Um SSH für die Verbindung über ein Zwischengerät zu verwenden, können Sie eine der folgenden Optionen verwenden:

  • Fügen Sie in Ihrer SSH-Konfigurationsdatei einen Eintrag für das Zielgerät hinzu und geben Sie die Option ProxyCommand an.

  • Schließen Sie in Ihrer Device Argumentliste den proxy_command Parameter ein.

Das Device proxy_command Argument hat Vorrang vor der ProxyCommand-Option in der SSH-Konfigurationsdatei. Wenn Sie beide Optionen konfigurieren, verwendet Junos PyEZ nur das proxy_command Argument. In den folgenden Abschnitten finden Sie Details zur Verwendung der einzelnen Optionen.

Beispiel: Verwenden von ProxyCommand in der SSH-Konfigurationsdatei

Um eine Bastion oder einen Sprunghost in Ihrer SSH-Konfigurationsdatei zu konfigurieren, fügen Sie einen Eintrag für den Junos-Host hinzu und schließen Sie die Option ProxyCommand ein. Die ProxyCommand-Zeichenfolge definiert die Verbindung mit dem Zwischengerät. Die folgende Konfiguration stellt beispielsweise eine Verbindung über einen Zwischenhost her, der netcat unterstützt.

Auf ähnliche Weise stellt die folgende Konfiguration über das Zwischengerät eine Verbindung zum Zielhost und -port im stillen Modus her, wodurch Warnungen unterdrückt werden.

Beispiel: Verwenden des Arguments Device proxy_command

Wenn Sie Devicedefinieren, können Sie das Argument für die proxy_command Verbindung über ein Zwischengerät angeben. Die proxy_command Zeichenfolge definiert die Verbindung zum Bastion- oder Sprunghost. Bei Bedarf fordert Junos PyEZ zur Eingabe des Kennworts des Jump-Hosts oder seiner Passphrase für den privaten SSH-Schlüssel auf.

Im folgenden Beispiel wird über einen Jumphost eine Verbindung zu einem Junos-Gerät hergestellt. In diesem Beispiel authentifiziert sich Junos PyEZ bei jedem Gerät mithilfe von passphrasengeschützten SSH-Schlüsseln, die in den SSH-Schlüsselagenten geladen werden.

Wenn Sie die SSH-Schlüssel für den Jump-Host und das Netzwerkgerät in Ihren SSH-Schlüsselagenten laden, müssen Sie die privaten Schlüsselpfade oder Passphrasen nicht in der Anwendung Junos PyEZ angeben. Wenn Sie die erforderlichen Schlüssel jedoch nicht in den SSH-Schlüssel-Agent laden, müssen Sie den Pfad und die Passphrase für alle passphrasengeschützten Schlüssel an nicht standardmäßigen Speicherorten angeben. Die ssh_private_key_file Argumente and password geben den Pfad und die Passphrase des privaten Schlüssels an, der für die Authentifizierung beim Junos-Gerät verwendet wird. Verwenden Sie im proxy_command Argument die -i path Option, um den Pfad des privaten Schlüssels anzugeben, der für die Authentifizierung beim Jump-Host verwendet wird. Wenn Sie das Skript ausführen, fordert Junos PyEZ zur Eingabe der entsprechenden Passphrase für den privaten Schlüssel auf. Zum Beispiel:

Wenn Sie das Skript ausführen, fordert das Skript zur Eingabe der Passphrasen der privaten Schlüssel auf.

Herstellen einer Verbindung mit einem Gerät über ausgehendes SSH

Sie können ein Junos-Gerät so konfigurieren, dass eine TCP/IP-Verbindung mit einer Client-Verwaltungsanwendung initiiert wird, 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-Management-Anwendung herzustellen und die Identität des Geräts weiterzuleiten. Sobald die Verbindung hergestellt ist, fungiert die Verwaltungsanwendung als Client und initiiert die SSH-Sequenz, während das Junos-Gerät als Server fungiert und den Client authentifiziert.

Hinweis:

Sobald Sie ausgehende SSH auf dem Junos-Gerät konfiguriert und committen, beginnt das Gerät mit der Initiierung einer ausgehenden SSH-Verbindung basierend auf der festgeschriebenen Konfiguration. Das Gerät versucht wiederholt, diese Verbindung herzustellen, bis dies erfolgreich ist. Wenn die Verbindung zwischen dem Gerät und der Clientverwaltungsanwendung unterbrochen wird, versucht das Gerät erneut, eine neue ausgehende SSH-Verbindung zu erstellen, bis dies erfolgreich ist. Diese Verbindung wird aufrechterhalten, bis die ausgehende SSH-Konfiguration gelöscht oder deaktiviert wird.

Um das Junos-Gerät für ausgehende SSH-Verbindungen zu konfigurieren, schließen Sie die outbound-ssh Anweisung auf Hierarchieebene [edit system services] ein. Im folgenden Beispiel versucht das Junos-Gerät, eine Verbindung mit dem Host unter 198.51.100.101 auf Port 2200 herzustellen:

Um eine Verbindung mit dem Junos-Gerät über ausgehendes SSH herzustellen, setzt die Junos PyEZ-Anwendung das sock_fd Argument im Konstruktor Device gleich dem Dateideskriptor eines vorhandenen Sockets und lässt das host Argument entweder aus oder setzt es auf None.

Das folgende Junos PyEZ-Beispiel überwacht den konfigurierten TCP-Port auf eingehende SSH-Sitzungen von Junos-Geräten. Die Anwendung akzeptiert eine eingehende Verbindung und ruft den Dateideskriptor des Sockets für diese Verbindung ab, der 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 Gerätefakten, trennt die Verbindung zum Gerät und wartet auf weitere Verbindungen.

Ausführliche Informationen zum Konfigurieren von ausgehendem SSH auf Junos-Geräten finden Sie unter Konfigurieren des ausgehenden SSH-Diensts.

Herstellen einer Verbindung mit einem Gerät über Telnet

Die Junos PyEZ-Klasse Device unterstützt die Verbindung mit einem Junos-Gerät über Telnet, das einen unverschlüsselten Zugriff auf das Netzwerkgerät ermöglicht. Sie können Telnet zur Verwaltungsschnittstelle des Geräts oder zu einem Konsolenserver herstellen, der direkt mit dem CONSOLE-Port des Geräts verbunden ist. Sie müssen die telnet Anweisung auf Hierarchieebene [edit system services] auf allen Geräten konfigurieren, die Zugriff auf die Verwaltungsschnittstelle benötigen. Wenn Sie über einen Konsolenserver auf das Gerät zugreifen, können Sie zunächst ein neues oder auf Null gesetztes Gerät konfigurieren, das noch nicht für den Remotezugriff konfiguriert ist.

Um Junos PyEZ für Telnet zu einem Junos-Gerät zu verwenden, müssen Sie die Argumentliste aufnehmen mode='telnet' Device und optional den port Parameter zur Angabe eines Ports angeben. Wenn Sie den port Parameter angebenmode='telnet', aber weglassen, wird der Wert für port auf 23 festgelegt. Wenn die Anwendung eine Verbindung über einen Konsolenserver herstellt, geben Sie den Port an, über den der Konsolenserver eine Verbindung zum Junos-Gerät herstellt.

So verwenden Sie Junos PyEZ für Telnet zu einem Junos-Gerät und drucken die Gerätefakten:

  1. Importieren Sie die Klasse und alle anderen Module oder Objekte, die Device für Ihre Aufgaben erforderlich sind.
  2. Erstellen Sie die Geräteinstanz mit dem mode='telnet' Argument, geben Sie den Verbindungsport an, falls er vom Standardwert abweicht, und geben Sie den Hostnamen, alle für die Authentifizierung erforderlichen Parameter und alle optionalen Parameter an.
  3. Stellen Sie eine Verbindung mit dem Gerät her, indem Sie die open() Methode aufrufen.
  4. Drucken Sie die Gerätefakten aus.
  5. Schließen Sie nach dem Ausführen aller erforderlichen Aufgaben die Verbindung zum Gerät.

Das vollständige Beispielprogramm wird hier vorgestellt:

Alternativ können Sie bei der Verbindung mit dem Gerät einen Kontextmanager verwenden, der das Öffnen und Schließen der Verbindung übernimmt. Zum Beispiel:

In einigen Fällen müssen Sie beim Herstellen einer Verbindung zu einem Konsolenserver, der eine Bannermeldung ausgibt, möglicherweise nach der Meldung die Eingabetaste drücken, um die Anmeldeaufforderung zu erreichen. In diesem Fall kann die Anwendung die Anmeldeaufforderung nicht empfangen, was dazu führen kann, dass die Verbindung hängen bleibt.

Ab Junos PyEZ Version 2.6.2 verarbeitet Junos PyEZ automatisch das Konsolenserverbanner. In den Junos PyEZ-Versionen 2.1.0 bis 2.6.1 kann eine Junos PyEZ-Anwendung in die Device Argumentliste aufnehmenconsole_has_banner=True, um einen Konsolenserver zu verarbeiten, der eine Bannernachricht ausgibt.

Wenn Sie das Argument angeben und die Anwendung bei der console_has_banner=True ersten Verbindung keine Anmeldeaufforderung erhält, wartet die Anwendung 5 Sekunden. Die Anwendung gibt dann einen Zeilenumbruch (\n) aus, sodass der Konsolenserver die Anmeldeaufforderung ausgibt. Wenn Sie das Argument weglassen und die Verbindung hängt, gibt die Anwendung stattdessen den <close-session/> RPC aus, um die Verbindung zu beenden.

Verbinden mit einem Gerät über eine serielle Konsolenverbindung

Die Junos PyEZ-Klasse Device ermöglicht es Ihnen, eine Verbindung zu einem Junos-Gerät über eine serielle Konsolenverbindung herzustellen. Eine serielle Konsolenverbindung ist nützlich, wenn Sie zunächst ein neues oder auf Null gesetztes Gerät konfigurieren müssen, das noch nicht für den Remotezugriff konfiguriert ist. Um diese Verbindungsmethode verwenden zu können, müssen Sie physisch über den KONSOLEN-Port mit dem Gerät verbunden sein. Ausführliche Anweisungen zum Herstellen einer Verbindung mit dem CONSOLE-Port auf Ihrem Gerät finden Sie in der Hardwaredokumentation für Ihr spezifisches Gerät.

Hinweis:

Junos PyEZ unterstützt die Verwendung von Kontextmanagern für serielle Konsolenverbindungen. Es wird empfohlen, einen Kontextmanager für Konsolenverbindungen zu verwenden, da der Kontextmanager das Öffnen und Schließen der Verbindung automatisch verarbeitet. Wenn die Verbindung nicht geschlossen wird, kann dies zu unvorhersehbaren Ergebnissen führen.

Um mit Junos PyEZ eine Verbindung zu einem Junos-Gerät über eine serielle Konsole herzustellen, müssen Sie diese in die Device Argumentliste aufnehmenmode='serial'. Sie können optional den port Parameter einschließen, um einen Port anzugeben. Wenn Sie den Parameter angebenmode='serial', aber weglassen, wird der Wert für port standardmäßig auf /dev/ttyUSB0port festgelegt.

So verwenden Sie Junos PyEZ, um eine Verbindung zu einem Junos-Gerät über eine serielle Konsolenverbindung herzustellen und eine Konfiguration zu laden und zu bestätigen:

  1. Importieren Sie die Klasse und alle anderen Module oder Objekte, die Device für Ihre Aufgaben erforderlich sind.
  2. Erstellen Sie die Geräteinstanz mit dem mode='serial' Argument und geben Sie den Verbindungsport an, falls er vom Standardwert abweicht. Geben Sie alle für die Authentifizierung erforderlichen Parameter sowie optionale Parameter an.
    Hinweis:

    Auf allen Plattformen, auf denen Junos OS ausgeführt wird, ist standardmäßig nur der Root-Benutzer ohne Kennwort konfiguriert. Verwenden user='root' Sie für neue oder auf Null gesetzte Geräte den Parameter und lassen Sie ihn passwd weg.

  3. Laden Sie die Konfiguration und bestätigen Sie sie auf das Gerät.
  4. Schließen Sie die erforderliche Fehlerbehandlung ein.

Das vollständige Beispielprogramm wird hier vorgestellt: