Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Definieren von Junos PyEZ-Betriebstabellen zum Parsen strukturierter Ausgaben

ZUSAMMENFASSUNG Erstellen Sie benutzerdefinierte Tabellen, die bestimmte Elemente aus der RPC-XML-Ausgabe auswählen, um Betriebsinformationen von einem Junos-Gerät zu extrahieren.

Junos PyEZ Operational (op) Tabellen für strukturierte Ausgabe: Extrahieren von Daten aus der XML-Ausgabe eines RPC, der auf einem Junos-Gerät ausgeführt wird. Auf diese Weise können Sie die relevanten Betriebszustandsinformationen für das Gerät schnell abrufen und überprüfen.

Junos PyEZ-Tabellen werden mit YAML formatiert. Op-Tabellendefinitionen können eine Reihe von erforderlichen und optionalen Parametern enthalten, die in Tabelle 1 zusammengefasst sind.

Tabelle 1: Parameter in Junos PyEZ Op-Tabellen für strukturierte Ausgabe

Name der Tabellenparameter

Tabellen-Parameter

Beschreibung

Tabellenname

Benutzerdefinierter Bezeichner für die Tabelle.

RPC-Befehl

rpc

Anforderungstagname des auszuführenden RPC.

RPC-Standardargumente

args

(Optional) Standardbefehlsoptionen und -argumente für den RPC.

Optionaler RPC-Argumentschlüssel

args_key

(Optional) Verweis auf das optionale erste Argument eines Befehls, wenn für dieses Argument kein bestimmtes Schlüsselwort erforderlich ist.

Wenn Sie diese Eigenschaft nicht einschließen, müssen Sie das Schlüsselwort oder den Optionsnamen für optionale Argumente angeben, die beim Abrufen der Betriebsdaten in der get() Methodenargumentliste enthalten sind.

Tabellenelement

item

XPath-Ausdruck relativ zum Element der obersten Ebene innerhalb des Elements, das <rpc-reply> die Elemente auswählt, die aus den Daten extrahiert werden sollen.

Diese Elemente werden zur Referenz für die zugeordnete Ansicht.

Schlüssel für Tabellenelemente

key

(Optional) XPath-Ausdruck oder eine Liste von XPath-Ausdrücken, die das Tag oder die Tags auswählt, deren Werte das Tabellenelement für Elemente, die das <name> Element nicht als Bezeichner verwenden, eindeutig identifizieren, oder für Fälle, in denen zusammengesetzte Schlüssel erforderlich sind.

Wenn das Element das <name> Element für den Bezeichner verwendet, können Sie diese Eigenschaft weglassen.

Tabellenansicht

view

Ansicht, die zum Extrahieren von Felddaten aus den Tabellenelementen verwendet wird.

Betrachten Sie die folgende Junos PyEZ-Op-Tabelle, EthPortTabledie in der Junos PyEZ-Distribution enthalten ist. Die Tabelle extrahiert Betriebszustandsinformationen für Ethernet-Schnittstellen auf dem Zielgerät:

In den folgenden Abschnitten werden die verschiedenen Komponenten der Tabelle erläutert.

Tabellenname

Der Tabellenname ist ein benutzerdefinierter Bezeichner für die Tabelle. Die YAML-Datei oder -Zeichenfolge kann eine oder mehrere Tabellen enthalten. Der Anfang des YAML-Dokuments muss linksbündig ausgerichtet werden. Zum Beispiel:

RPC-Befehl (rpc)

Junos PyEZ op Tabellen für die strukturierte Ausgabe extrahieren spezifische Informationen aus der XML-Ausgabe eines RPC. Sie müssen die rpc Eigenschaft in die op-Tabellendefinition aufnehmen, um den RPC anzugeben, der auf einem Gerät ausgeführt werden soll.

Der rpc Wert ist das Junos XML-Anforderungs-Tag für einen Befehl. Der Name des Anforderungs-Tags für den show interfaces Befehl lautet get-interface-informationz. B. .

Das Anforderungs-Tag kann mit einer der folgenden Methoden gefunden werden:

  • Anhängen der | display xml rpc Option nach dem Befehl in der Junos OS CLI

  • Ausführen der Junos PyEZ-Instanzmethode Device display_xml_rpc('command', format='text')

  • Suchen des Befehls und des entsprechenden Tags im Junos XML API Explorer

RPC-Standardargumente (args)

Die optional-Eigenschaft args definiert die Standardbefehlsoptionen und -argumente für den RPC. Diese werden als Schlüssel-Wert-Paare aufgeführt, die unter eingerückt sind args. Ein Standardargument wird verwendet, wenn Sie die get() Methode im Skript aufrufen und kein Argument angeben, das diesen Standardwert überschreibt.

Wenn eine Option nur ein Flag ist, für das kein bestimmter Wert erforderlich ist, können Sie sie in die Argumentliste aufnehmen, indem Sie den Optionswert in der Tabellendefinition auf True festlegen. Beispielsweise wird der show interfaces media Befehl dem get-interface-information Anforderungstag mit dem Argument media: True. Wenn für eine Option ein Wert erforderlich ist, legen Sie den Argumentwert auf den Wert fest, den Sie als Standardwert verwenden möchten.

Hinweis:

Wenn der Optionsname in der Befehlszeilenschnittstelle (CLI) von Junos OS mit Bindestrich versehen ist, müssen Sie alle Bindestriche im Namen in Unterstriche ändern.

Standardmäßig normalisiert Junos PyEZ alle Tabellenschlüssel und -werte, wodurch alle führenden und nachfolgenden Leerzeichen entfernt und Sequenzen interner Leerzeichen durch ein einzelnes Leerzeichen ersetzt werden. Um die Normalisierung für eine Tabelle zu deaktivieren, fügen Sie sie in die Argumentliste ein.normalize: False

Optionaler RPC-Argumentschlüssel (args_key)

Sie verwenden die optional-Eigenschaft args_key in Fällen, in denen ein CLI-Befehl ein optionales erstes Argument akzeptiert, für das Sie keinen expliziten Optionsnamen oder ein Schlüsselwort angeben müssen. Im folgenden Beispiel akzeptiert der show interfaces Befehl einen Schnittstellennamen als optionales Argument:

Die args_key Eigenschaft ermöglicht es Ihnen, dieses optionale Argument beim Abrufen von Betriebsdaten zu verwenden, ohne das Schlüsselwort oder den Optionsnamen explizit angeben zu müssen.

Wenn Sie die args_key Eigenschaft in die Tabellendefinition aufnehmen, können Sie den Argumentwert angeben, aber den Optionsnamen beim Abrufen der Daten weglassen.

Wenn Sie die args_key Eigenschaft in der Tabellendefinition weglassen, müssen Sie den Optionsnamen explizit angeben, wenn Sie diesen Parameter beim Abrufen der Daten einschließen möchten.

Tabellenelement (Element)

Die Table-Eigenschaft item , die in allen op-Tabellendefinitionen erforderlich ist, identifiziert die Daten, die aus der RPC-Ausgabe extrahiert werden sollen. Der item Wert ist ein XPath-Ausdruck relativ zum Element der obersten Ebene innerhalb des Tags, das <rpc-reply> die gewünschten Elemente auswählt. Diese Elemente werden zur Referenz für die zugeordnete Ansicht.

Das folgende Beispiel zeigt ein Beispiel für eine abgeschnittene CLI-Befehlsausgabe:

Um die <physical-interface> Elemente aus dieser Ausgabe auszuwählen, schließen Sie die item Eigenschaft ein, und geben Sie den XPath an, der das Element auswählt. In diesem Fall ist das <physical-interface> Element ein direktes untergeordnetes Element des Elements der obersten Ebene <interface-information> , und der XPath-Ausdruck für den item Wert ist nur der Elementname.

Diese Elemente werden zur Referenz für die zugeordnete Ansicht.

Verschiedene Geräte können unterschiedliche Ausgabeelemente für denselben RPC ausgeben. Daher kann der XPath des Elements je nach System variieren. Die item Eigenschaft unterstützt die Verwendung des Pipe-Operators ( | ), um ein implizites "oder" anzugeben, um aus mehreren möglichen Knoten auszuwählen. Wenn die item Eigenschaft diesen Operator enthält, muss die key Eigenschaft eine Liste verwenden. Zum Beispiel:

Tabellenelementschlüssel (Schlüssel)

Die optionale key Eigenschaft ist ein XPath-Ausdruck oder eine Liste von XPath-Ausdrücken, die auswählt, welche Tags verwendet werden, um ein Tabellenelement für die Elemente, die das <name> Element nicht als Bezeichner verwenden, eindeutig zu identifizieren, oder für Fälle, in denen Sie zusammengesetzte Schlüssel verwenden möchten.

In der folgenden Befehlsausgabe wird jedes <physical-interface> Element eindeutig durch sein <name> untergeordnetes Element identifiziert:

Wenn die Table-Eigenschaft item die <physical-interface> Elemente auswählt, können Sie die key Eigenschaft aus der Tabellendefinition weglassen, wenn Sie das <name> Element standardmäßig als Schlüssel verwenden möchten.

Betrachten Sie im Gegensatz dazu die folgende show route brief Befehlsausgabe:

Bei der Auswahl der route-table/rt Elemente gibt es kein entsprechendes <name> Element, um jeden Routeneintrag eindeutig zu identifizieren. Wenn der <name> Bezeichner nicht vorhanden ist, kann die key Eigenschaft angeben, welches Tag oder welche Tags jedes Element eindeutig identifizieren. In diesem Fall können Sie jedes route-table/rt Element eindeutig identifizieren, indem Sie es als Schlüssel verwenden <rt-destination> .

Darüber hinaus kann ab Junos PyEZ, Version 2.3.0, eine Tabelle definiert key: Null werden, die angibt, dass ein Schlüssel nicht erforderlich ist. In diesem Fall geben die Tabelle und die Ansicht die Daten als einfaches Wörterbuch und nicht als geschachteltes Wörterbuch mit Schlüsseln zurück.

Tabellenelemente können durch einen Schlüssel definiert werden, der aus einem einzelnen Element oder mehreren Elementen besteht. Bei Einzelelementschlüsseln wird ein einfacher XPath-Ausdruck für den Wert der key Eigenschaft verwendet. Zusammengesetzte Schlüssel werden durch eine Liste von XPath-Ausdrücken definiert. Betrachten Sie die folgende Tabellendefinition:

Der zusammengesetzte Schlüssel für diese Tabellendefinition könnte in etwa wie folgt aussehen:

Wenn ein zusammengesetzter Schlüssel auf ein fehlendes Element verweist, ersetzt Junos PyEZ den Wert im Schlüssel durch None.

Hinweis:

Die key Eigenschaft muss eine Liste verwenden, wenn die item Eigenschaft den Pipe-Operator ( | ) enthält.

Die key Eigenschaft unterstützt auch den Pipe-Operator ( | ), mit dem die Tabelle aus mehreren möglichen Knoten auswählen kann. Der Operator ermöglicht es Ihnen, dieselbe Tabelle auch dann zu verwenden, wenn verschiedene Systeme unterschiedliche Ausgabeelemente für denselben RPC ausgeben. Beispielsweise kann die LLDPNeighborTable, die hier als Referenz gezeigt wird, das lldp-local-interface Element or lldp-local-port-id als Schlüssel auswählen:

Wenn die key Eigenschaft den | Operator verwendet, wird jeder Schlüssel, der in der RPC-Antwort vorhanden ist, der Liste der Schlüssel hinzugefügt. Der Operator kann verwendet werden, um ein implizites "oder" anzugeben, und ist nützlich in Situationen, in denen unterschiedliche Tag-Namen für verschiedene Arten von Konfigurationen oder Releases vorhanden sind. Wenn z. B. der RPC als Bezeichner für ein Gerät zurückgegeben lldp-local-interface wird und derselbe RPC als Bezeichner für ein anderes Gerät zurückgegeben wird lldp-local-port-id , wählt die Tabelle automatisch den entsprechenden Schlüssel aus.

Tabellenansicht (Ansicht)

Die view Eigenschaft ordnet die Tabellendefinition einer bestimmten Ansicht zu. Eine Ansicht ordnet Ihre benutzerdefinierten Feldnamen mithilfe von XPath-Ausdrücken Elementen in den ausgewählten Tabellenelementen zu. Sie können die Ansicht so anpassen, dass nur die erforderlichen Elemente aus den Tabellenelementen ausgewählt werden.