Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Definieren verschiedener Ausgabeebenen in benutzerdefinierten YANG-RPCs für Junos-Geräte

Definieren verschiedener Ausgabestufen in benutzerdefinierten YANG-RPCs

Mit YANG können Sie benutzerdefinierte RPCs für Junos-Geräte definieren. Die RPC-Ausgabe kann so angepasst werden, dass je nach RPC-Eingabe unterschiedliche Daten- und CLI-Formatierungen ausgegeben werden. Auf diese Weise können Sie verschiedene Stile oder Ausgabeebenen für denselben RPC erstellen.

Sie können den gewünschten Stil anfordern, indem Sie den entsprechenden Wert für das Eingabeargument einschließen, wenn Sie den RPC aufrufen. Das Aktionsskript muss dieses Argument verarbeiten und die XML-Ausgabe für den angeforderten Stil ausgeben. Junos OS übersetzt dann den XML-Code in die entsprechende CLI-Ausgabe, die für diesen Stil im YANG-Modul definiert ist. Die in diesem Thema vorgestellte RPC-Vorlage erstellt zwei Stile: brief und detail.

So erstellen Sie verschiedene Stile für die Ausgabe eines RPC:

  1. Importieren Sie in das YANG-Modul, das den RPC enthält, das Junos OS ODL-Erweiterungsmodul, das YANG-Erweiterungen definiert, mit denen Sie genau angeben, wie die Ausgabe gerendert werden soll, wenn Sie den RPC-Befehl in der CLI ausführen oder wenn Sie die RPC-Ausgabe im Textformat anfordern.
    Hinweis:

    Ab Junos OS Version 17.4R1 verwenden die Junos OS YANG-Module eine neue Namenskonvention für den Namen, den Dateinamen und den Namespace des Moduls.

  2. Definieren Sie in den Eingabeparametern des RPC eine leaf Anweisung mit dem Typ enumeration, und schließen Sie Anweisungen ein enum , die Namen für jeden Stil definieren.
    Hinweis:

    Ab Junos OS Version 17.3 ist die action-execute Anweisung eine Unteranweisung von command. In früheren Versionen werden die and-Anweisungen command auf derselben Ebene platziert, und die action-execute command Anweisung ist optional.

  3. Erstellen Sie in der RPC-Anweisung output separate junos-odl:style Anweisungen, die die CLI-Formatierung für jeden Stil definieren. Der Bezeichner für jede style Anweisung sollte mit einem der Formatvorlagennamen übereinstimmen, die in der Enumerationsanweisung definiert sind leaf .
    Hinweis:

    Ab Junos OS Version 17.3 wird die CLI-Formatierung für einen benutzerdefinierten RPC in der junos-odl:format extension-Anweisung definiert und junos-odl:format ist eine Unteranweisung von junos-odl:style. In früheren Versionen wird die CLI-Formatierung mithilfe eines Containers definiert, der die Anweisung enthält, und die junos-odl:cli-format junos-odl:style Anweisung ist in diesem Container enthalten.

  4. Verarbeiten Sie im RPC-Aktionsskript das Eingabeargument, und geben Sie die XML-Ausgabe für den angeforderten Stil aus, der in einem übergeordneten Element eingeschlossen ist, dessen Tagname mit dem Formatvorlagennamen identisch ist.
    Hinweis:

    Ab Junos OS Version 21.2R1 und Junos OS Evolved Version 21.2R1 wird beim Übergeben von Befehlszeilenargumenten an ein Python-Aktionsskript ein einzelner Bindestrich (-) an einstellige Argumentnamen und zwei Bindestriche (--) an mehrstellige Argumentnamen vorangestellt.

    Unter Beispiel: Definieren verschiedener Ausgabeebenen finden Sie vollständige Skriptbeispiele, die in den verschiedenen Versionen funktionieren.

Der folgende Code beschreibt die allgemeine Struktur des RPC-Moduls und des einschließenden Moduls. Wenn Sie den RPC in der CLI aufrufen und das Eingabeargument level einschließen und entweder brief oder detailangeben, rendert Junos OS die für diesen Stil definierte Ausgabe.

Um den RPC in der CLI auszuführen, geben Sie den durch die junos:command Anweisung definierten Befehl ein, und geben Sie den Stil an, indem Sie das entsprechende Befehlszeilenargument einfügen, das in diesem Beispiel . level Das entsprechende Aktionsskript verarbeitet das Eingabeargument und gibt die Ausgabe für den angeforderten Stil aus.

Beispiel: Definieren verschiedener Ausgabeebenen

In diesem Beispiel wird ein einfaches benutzerdefiniertes YANG-RPC- und Aktionsskript vorgestellt, die bestimmen, ob ein Host erreichbar ist, und je nach Benutzereingabe unterschiedliche Ausgabeebenen ausgeben.

Anforderungen

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

  • Gerät mit Junos OS Version 17.3R1 oder höher, das das Laden benutzerdefinierter YANG-Datenmodelle unterstützt.

Übersicht über RPC und Action Script

Das YANG-Modul in diesem Beispiel definiert einen benutzerdefinierten RPC, um den angegebenen Host anzupingen und das Ergebnis mit verschiedenen Ausgabeebenen basierend auf der Eingabe des Benutzers zurückzugeben. Das YANG-Modul rpc-style-test wird in der Datei rpc-style-test.yang gespeichert. Das Modul importiert die Junos OS-Erweiterungsmodule, die die Erweiterungen bereitstellen, die zum Ausführen benutzerdefinierter RPCs auf dem Gerät und zum Anpassen der CLI-Ausgabe erforderlich sind.

Das Modul definiert den get-host-status RPC. Das <get-host-status> Anforderungs-Tag wird verwendet, um den RPC remote auf dem Gerät auszuführen. In der RPC-Definition definiert die junos:command Anweisung den Befehl, der zum Ausführen des RPC in der CLI verwendet wird show host-status, in diesem Fall .

Die junos:action-execute and-Anweisungen junos:script definieren das Aktionsskript, das beim Ausführen des RPC aufgerufen wird. In diesem Beispiel wird ein Python-Aktionsskript mit dem Namen rpc-style-test.py verwendet, um die für den RPC erforderlichen Informationen abzurufen. Das Skript gibt die XML-Ausgabeelemente für jede Ausgabeebene zurück, wie in der RPC-Anweisung output definiert.

Hinweis:

Ab Junos OS Version 17.3 ist die action-execute Anweisung eine Unteranweisung von command. In früheren Versionen werden die and-Anweisungen command auf derselben Ebene platziert, und die action-execute command Anweisung ist optional.

Der RPC verfügt über zwei Eingabeparameter hostip und level. Der hostip Parameter ist der Host, der auf Erreichbarkeit geprüft werden soll. Der level Parameter wählt den Stil für die RPC-Ausgabe aus. Wenn Sie den RPC ausführen, schließen Sie die IP-Adresse des Zielhosts und eine Ebene brief oder detail. Das Aktionsskript definiert den Standardwert für level as 'brief', wenn Sie also dieses Argument weglassen, gibt der RPC die Ausgabe aus, die dem Kurzzeitstil entspricht.

Der RPC definiert auch die Ausgabeknoten, die vom entsprechenden Aktionsskript ausgegeben werden müssen. Der Stammknoten ist das Element, das je nach Benutzereingabe entweder das oder das <host-status-information> <brief> <detail> Element zusammen mit den untergeordneten Ausgabeknoten umschließt, die für jede Ausgabeebene angegeben sind. Beide Ausgabeebenen enthalten das und <status> das untergeordnete Element, aber das Element enthält auch das <hostip> <detail> <date> untergeordnete Element. Die junos-odl:format Anweisungen definieren die Formatierung für die Ausgabe, die in der CLI angezeigt wird. Dieser Knoten wird in der XML-Ausgabestruktur nicht ausgegeben.

Das Aktionsskript pingt den Host an, um festzustellen, ob er erreichbar ist, und legt den Status basierend auf den Ergebnissen fest. Das Skript erstellt und druckt dann den XML-Code für die RPC-Ausgabe basierend auf dem angegebenen level Argument. Die XML-Struktur muss exakt mit der in der RPC definierten Hierarchie übereinstimmen.

Das Modul, das den RPC und die Aktionsskriptdatei enthält, wird dem Gerät als Teil eines neuen YANG-Pakets mit dem Namen rpc-style-testhinzugefügt.

YANG-Modul und Aktionsskript

YANG-Modul

Das YANG-Modul rpc-style-test.yang definiert den RPC, den Befehl zum Ausführen des RPC in der CLI und den Namen des Aktionsskripts, das beim Ausführen des RPC aufgerufen werden soll. Der Basisname der Datei muss mit dem Modulnamen übereinstimmen.

Action-Skript

Das entsprechende Aktionsskript wird rpc-style-test.py. Das Aktionsskript gibt basierend auf dem Wert des level vom Benutzer bereitgestellten Arguments verschiedene Ausgabeebenen aus. Das Skript definiert einen Standardwert von 'brief' für das Argument, sodass das Skript den kurzen Ausgabestil zurückgibt, wenn der Benutzer das level Argument weglässt. In diesem Beispiel werden zwei Versionen des Aktionsskripts bereitgestellt, in denen die Befehlszeilenargumente des Skripts für die verschiedenen Versionen angemessen behandelt werden.

Action Script (Junos OS Version 21.2R1 und höher)
Action Script (Junos OS Version 21.1 und früher)

Konfiguration

Ausführen von Python-Skripten aktivieren

So aktivieren Sie das Gerät für die Ausführung nicht signierter Python-Skripte:

  1. Konfigurieren Sie die oder-Anweisung language python3 entsprechend für die language python Junos OS-Version.

    Hinweis:

    Ab Junos OS Version 20.2R1 und Junos OS Evolved Version 22.3R1 verwendet das Gerät Python 3 zum Ausführen von YANG-Aktions- und Übersetzungsskripten. In früheren Versionen verwendet Junos OS nur Python 2.7 zum Ausführen dieser Skripts, und Junos OS Evolved verwendet standardmäßig Python 2.7 zum Ausführen der Skripts.

  2. Bestätigen Sie die Konfiguration.

Laden Sie den RPC auf das Gerät

So fügen Sie den RPC und das Aktionsskript zum Junos-Schema auf dem Gerät hinzu:

  1. Laden Sie das YANG-Modul und das Aktionsskript auf das Junos-Gerät herunter.

  2. Stellen Sie sicher, dass das Python-Aktionsskript die folgenden Anforderungen erfüllt:

  3. (Optional) Überprüfen Sie die Syntax für das YANG-Modul und das Aktionsskript.

  4. Fügen Sie das YANG-Modul und das Aktionsskript zu einem neuen YANG-Paket hinzu.

  5. Wenn Sie vom System aufgefordert werden, die Junos OS CLI neu zu starten, drücken Sie, um den Standardwert von yeszu übernehmen, oder geben Sie yes ein, und drücken Enter Sie Enter.

Überprüfen des RPC

Zweck

Stellen Sie sicher, dass der RPC wie erwartet funktioniert.

Aktion

Führen Sie im Betriebsmodus den RPC in der CLI aus, indem Sie den Befehl ausführen, der durch die junos:command Anweisung in der RPC-Definition definiert ist. Fügen Sie das input-Argument hostip und das level Argument für jede unterschiedliche Ausgabeebene ein.

Sie können den entsprechenden XML-Code anzeigen, indem Sie ihn an den Befehl anhängen | display xml .

Ähnlich verhält es sich mit der detaillierten Ausgabe:

Bedeutung

Wenn Sie den RPC ausführen, ruft das Gerät das Aktionsskript auf. Das Aktionsskript gibt die XML-Hierarchie für die angegebene Ausgabeebene aus, wie in der RPC-Anweisung output definiert. Wenn der RPC in der CLI ausgeführt wird, verwendet das Gerät die im RPC definierte CLI-Formatierung, um die XML-Ausgabe in die angezeigte CLI-Ausgabe zu konvertieren.

Tabelle der Versionshistorie
Release
Beschreibung
21.2R1 und 21.2R1-EVO
Ab Junos OS Version 21.2R1 und Junos OS Evolved Version 21.2R1 wird beim Übergeben von Befehlszeilenargumenten an ein Python-Aktionsskript ein einzelner Bindestrich (-) an einstellige Argumentnamen und zwei Bindestriche (--) an mehrstellige Argumentnamen vorangestellt.