Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Verwenden von Junos PyEZ-Betriebstabellen und -Ansichten, die strukturierte Ausgaben analysieren

Junos PyEZ operational (op) Tabellen für strukturierte Ausgabe extrahieren spezifische Daten aus der XML-Ausgabe eines RPC, der auf einem Junos-Gerät ausgeführt wird. Nach dem Laden oder Importieren der Tabellendefinition in Ihr Python-Modul können Sie die Tabellenelemente abrufen, die Daten extrahieren und bearbeiten.

Zum Abrufen von Informationen von einem bestimmten Gerät müssen Sie eine Tabelleninstanz erstellen und sie dem Objekt, das Device das Zielgerät darstellt, zuordnen. Zum Beispiel:

In den folgenden Abschnitten wird erläutert, wie Sie die Daten abrufen und bearbeiten können:

Abrufen von Tabellenelementen

Die Table-Eigenschaft item bestimmt, welche Elemente aus der Betriebsbefehlsausgabe extrahiert werden. So führt beispielsweise die Junos PyEZ EthPortTable-Definition, die hier zur Referenz enthalten ist, den show interfaces "[afgxe][et]-*" media Befehl standardmäßig aus und extrahiert die physical-interface Elemente aus der Ausgabe.

Sie rufen die Tabellenelemente in Ihrem Python-Skript ab, indem Sie die get() Methode aufrufen und alle gewünschten Argumente liefern. Wenn die Tabellendefinition Standardargumente in der args Eigenschaft enthält, schließt der ausgeführte RPC diese Argumente automatisch ein, wenn Sie get() sie nicht in Ihrer Argumentliste überschreiben.

Rufen Sie die get() Methode mit einer leeren Argumentliste auf, um alle Tabellenelemente abzurufen.

Sie können auch bestimmte Tabellenelemente abrufen, indem Sie Befehlsoptionen als Argumente an die get() Methode übergeben. Wenn es sich bei der Befehlsoption um ein Flag handelt, das keinen Wert nimmt, legen Sie die Option gleich "True" in der Argumentliste fest. Andernfalls fügen Sie das Argument und den gewünschten Wert als Schlüssel-Wert-Paar in die Argumentliste ein. Sie können die möglichen Argumente für Betriebsbefehle in der Junos CLI überprüfen.

Standardmäßig gibt EthPortTable Informationen für Ethernet-Schnittstellen zurück, deren Namen dem Ausdruck "[afgxe][et]-*"entsprechen. Um das Tabellenelement nur für die ge-0/3/0-Schnittstelle abzurufen, fügen Sie interface_name='ge-0/3/0' als Argument zu get().

Hinweis:

Wenn der Optionsname in der Befehlszeilenschnittstelle (CLI) von Junos OS silphiert ist, müssen Sie alle Striche im Namen in Unterstriche ändern. Der Argumentwert ist jedoch eine Zeichenfolge und kann als solcher Bindestriche enthalten.

Wenn der CLI-Befehl ein optionales erstes Argument annimmt, für das Sie nicht explizit einen Optionsnamen oder -schlüsselwort angeben müssen, können Sie den Optionsnamen in der Liste der get() Methodenargumente auslassen, sofern die Table-Eigenschaft args_key auf dieses Argument verweist. Im folgenden Beispiel nimmt der show interfaces Befehl einen Schnittstellennamen als optionales Argument:

Die EthPortTable-Definition-Eigenschaft args_key definiert das optionale Argument als interface_name, wodurch Sie dieses Argument verwenden können, ohne den Optionsnamen in der get() Methodenargumentliste explizit angeben zu müssen.

Standardmäßig normalisiert Junos PyEZ alle Op-Tabellenschlüssel und -Werte, wodurch alle führenden und nachlaufenden Leerzeichen entfernt werden und Sequenzen interner Leerzeichen durch ein einziges Leerzeichen ersetzt werden. Um die Normalisierung zu deaktivieren, fügen Sie normalize=False die Methode als Argument ein get() .

Zugriffstabellenelemente

Nachdem Sie die Tabellenelemente abgerufen haben, können Sie sie wie ein Python-Wörterbuch behandeln, wodurch Sie Methoden in der Standard-Python-Bibliothek für den Zugriff auf und die Bearbeitung der Elemente verwenden können.

Rufen keys() Sie die Methode auf, um die Liste der Wörterbuchschlüssel anzuzeigen, die den Tabellenelementnamen entsprechen.

In diesem Fall gibt es nur einen einzigen Schlüssel.

Sie können überprüfen, ob ein bestimmter Schlüssel in den Tabellenelementen vorhanden ist, indem Sie den Python-Operator in verwenden.

Rufen Sie die Methode auf, um eine Liste der Felder oder Werte anzuzeigen, die values() jedem Schlüssel zugeordnet sind. Die values() Methode gibt eine Liste von Tupeln mit den Namen-Wert-Paaren für jedes Feld zurück, das in der Ansicht definiert wurde.

Rufen Sie die items() Methode auf, um die vollständige Liste der Elemente anzuzeigen, einschließlich der Schlüssel und Werte.

Iterate aus einer Tabelle

Tabellen unterstützen die Iteration, mit der Sie jedes Tabellenelement genauso durchschleifen können, wie Sie eine Liste oder ein Wörterbuch durchschleifen würden. So lassen sich gewünschte Felder ganz einfach formatieren und drucken.

Die EthPortTable-Definition, die im jnpr.junos.op Modul enthalten ist, führt den show interfaces "[afgxe][et]-*" media Befehl aus und extrahiert die physical-interface Elemente aus der Ausgabe. Der folgende Code schleift die physical-interface Elemente und druckt den Namen und Betriebsstatus jedes Ethernet-Ports:

Das oper Feld, das in EthPortView definiert ist, entspricht dem Wert des oper-status Elements in der Ausgabe. Die EthPortView-Definition definiert name kein Feld. Standardmäßig verfügt jedes View-Element über eine name Eigenschaft, die auf den Schlüssel verweist, der dieses Element eindeutig identifiziert.

Die Ausgabe umfasst den Schnittstellennamen und den Betriebsstatus.