Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Beispiel: Ändern der Konfiguration mithilfe von Python-Op-Skripten

Mit Op-Skripten können Sie kontrollierte Änderungen an der Junos OS-Konfiguration vornehmen. Op-Skripte sind von Vorteil, da sie Betriebsinformationen über ein Gerät sammeln und die Konfiguration basierend auf diesen Informationen aktualisieren können. Erfahrene Benutzer, die mit Junos OS vertraut sind, können Op-Skripte schreiben, die zur Eingabe der relevanten Konfigurationsinformationen auffordern und die Konfiguration entsprechend ändern. Auf diese Weise können Benutzer, die weniger Erfahrung mit Junos OS haben, die Konfiguration mithilfe des Skripts sicher ändern. In diesem Beispiel wird veranschaulicht, wie Sie mithilfe eines Python-Skripts , das Junos PyEZ-APIs nutzt, Änderungen an der Junos OS-Konfiguration vornehmen.

Anforderungen

In diesem Beispiel werden die folgenden Hardware- und Softwarekomponenten verwendet:

  • Router der MX-Serie mit Junos OS Version 16.1R3 oder höher, der das Python-Erweiterungspaket enthält.

Übersicht und Op-Skript

Python-Op-Skripte können mithilfe des Dienstprogramms Junos PyEZ Änderungen an der Junos OS-Konfiguration jnpr.junos.utils.config.Config vornehmen. Das Dienstprogramm Junos PyEZ Config stellt Instanzmethoden bereit, um die Konfiguration zu sperren, die Konfigurationsdaten zu laden und anzugeben, wie sie in die Konfiguration integriert, die Konfiguration festgeschrieben und die Konfiguration entsperrt werden sollen. Weitere Informationen zur Verwendung von Junos PyEZ zur Konfiguration von Junos-Geräten finden Sie unter Verwenden von Junos PyEZ zum Konfigurieren von Junos-Geräten. Das Python-Op-Skript in diesem Beispiel veranschaulicht, wie die Konfiguration aktualisiert wird, um eine Schnittstelle auf dem lokalen Gerät zu deaktivieren.

Das Python-Op-Skript importiert Folgendes:

  • Device -Klasse: Verwaltet die Verbindung zum Junos-Gerät

  • Config class: Führt Konfigurationsmodusbefehle auf dem Zielgerät aus

  • jnpr.junos.exception -Modul: Enthält Ausnahmen, die bei der Verwaltung von Junos-Geräten aufgetreten sind.

  • jcs Modul: Ermöglicht dem Skript die Ausführung unterstützter Erweiterungsfunktionen

In diesem Beispiel wird die usage Variable mit einer allgemeinen Beschreibung der Funktion des Skripts initialisiert. Wenn das Skript ausgeführt wird, gibt das Skript die Verwendungsbeschreibung in der CLI aus, damit der Benutzer den Zweck dieses Skripts überprüfen kann.

Das Skript ruft die Erweiterungsfunktion auf, die jcs.get_input() den Benutzer auffordert, den Namen der zu deaktivierenden Schnittstelle einzugeben, und speichert den Schnittstellennamen in der interface Variablen. Die config_xml Variable ist eine XML-Zeichenfolge, die die Konfigurationsänderungen definiert.

Das Skript stellt beim Erstellen der Device Instanz keinen Hostparameter bereit, wodurch die open() Methode eine Verbindung mit dem lokalen Gerät herstellt. In diesem Beispiel wird die Instanz mithilfe eines Kontext-Managers mit mode='exclusive' erstellt, um eine exklusive Sperre für die Config Konfiguration zu erhalten, während sie geändert wird. In diesem Modus übernimmt der Kontextmanager automatisch das Sperren und Entsperren der Kandidatenkonfiguration. Die Config Hilfsmethoden laden die Konfigurationsänderungen als load merge Vorgang in die Kandidatenkonfiguration und führen einen Commit für die Konfiguration aus. Die dev.close() Methode schließt die Verbindung.

Python-Skript

Konfiguration

Schritt-für-Schritt-Anleitung

So laden Sie das Skript herunter, aktivieren und testen es:

  1. Kopieren Sie das Skript in eine Textdatei, benennen Sie die Datei config-change.py und kopieren Sie sie in das Verzeichnis / var/db/scripts/op/ auf dem Gerät.

    Hinweis:

    Nicht signierte Python-Skripts müssen entweder root oder einem Benutzer in der Junos OS-Anmeldeklasse super-user gehören, und nur der Dateibesitzer kann Schreibberechtigungen für die Datei haben.

  2. Fügen Sie die file config-change.py Anweisung im Konfigurationsmodus auf Hierarchieebene [edit system scripts op] ein.

  3. Aktivieren Sie die Ausführung von nicht signierten Python-Skripten auf dem Gerät.

    Hinweis:

    Konfigurieren Sie die Anweisung so, dass Python 3 zum Ausführen von Python-Skripten verwendet wird, oder konfigurieren Sie die language python3 language python Anweisung so, dass Python 2.7 zum Ausführen von Python-Skripten verwendet wird. Weitere Informationen finden Sie unter Sprache.

  4. Geben Sie den Befehl ein, um die Konfiguration zu bestätigen und in den commit and-quit Betriebsmodus zurückzukehren.

  5. Geben Sie vor dem Ausführen des Skripts den Befehl operational mode ein, und notieren Sie den show interfaces interface-name aktuellen Status der Schnittstelle, die durch das Skript deaktiviert wird.

  6. Führen Sie das Op-Skript aus, indem Sie den op config-change.py Befehl operational mode eingeben.

Überprüfung

Verifizieren des Commits

Zweck

Vergewissern Sie sich, dass der Commit erfolgreich war.

Aktion

Sie sollten Code in Ihr Skript einfügen, der alle Warnungen oder Fehler im Zusammenhang mit dem Ändern und Ausführen eines Commits der Konfiguration abfängt. Auf diese Weise können Sie leichter feststellen, ob der Commit erfolgreich war. Wenn keine Warn- oder Fehlermeldungen angezeigt werden, können Sie den Erfolg des Commits auf verschiedene Arten überprüfen.

  • Überprüfen Sie das Commit-Protokoll, um sicherzustellen, dass der Commit erfolgreich war.

  • Überprüfen Sie die Syslog-Meldungsdatei, um sicherzustellen, dass der Commit-Vorgang protokolliert wurde. In diesem Fall wird auch eine SNMP_TRAP_LINK_DOWN Meldung für die deaktivierte Schnittstelle angezeigt. Abhängig von Ihren Konfigurationseinstellungen für Trace-Optionen wird diese Meldung möglicherweise nicht in der Protokolldatei angezeigt.

Überprüfen der Konfigurationsänderungen

Zweck

Stellen Sie sicher, dass die richtigen Änderungen in die Konfiguration integriert sind.

Aktion

  • Zeigen Sie die Konfiguration an, und überprüfen Sie, ob die Änderungen für die angegebene Schnittstelle sichtbar sind.

  • In diesem Beispiel können Sie auch den show interfaces interface-name Befehl Betriebsmodus ausführen, um zu überprüfen, ob die Schnittstelle deaktiviert wurde. In diesem Fall zeigt die Ausgabe, die vor dem Deaktivieren der Schnittstelle erfasst wurde Enabled, dass die Schnittstelle .

    Die Ausgabe, die nach dem Ausführen des Skripts zum Deaktivieren der Schnittstelle erfasst wurde, zeigt, dass die Schnittstelle jetzt Administratively down.