Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Verwenden von Junos PyEZ-Konfigurationstabellen zum Abrufen von Konfigurationsdaten

Junos PyEZ-Konfigurationstabellen und -ansichten bieten eine einfache und effiziente Möglichkeit, spezifische Informationen aus der ausgewählten Konfigurationsdatenbank eines Junos-Geräts zu extrahieren. Nachdem Sie die Tabellendefinition in Ihr Python-Modul geladen oder importiert haben, können Sie die Konfigurationsdaten abrufen.

Junos PyEZ-Konfiguration Tabellen, die die get Eigenschaft angeben, können nur Konfigurationsdaten abrufen. Tabellen, die die set Eigenschaft angeben, können Ressourcen auf Junos-Geräten konfigurieren und Daten auf die gleiche Weise abrufen wie Tabellen, die die get Eigenschaft angeben.

Um Informationen von einem bestimmten Gerät abzurufen, müssen Sie eine Table-Instanz erstellen und sie dem Objekt zuordnen, das Device das Zielgerät darstellt. Zum Beispiel:

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

Abrufen von Konfigurationselementen

Die Konfigurationstabelle get oder set -eigenschaft gibt die Daten an, die aus der Konfiguration extrahiert werden sollen. In der folgenden Beispiel-Tabellendefinition werden z. B. Elemente auf der Ebene der [edit system login] Konfigurationshierarchie extrahiertuser:

Sie rufen die Konfigurationsdaten in Ihrem Python-Skript ab, indem Sie die get() Methode aufrufen und alle gewünschten Argumente angeben.

Wenn die Tabellendefinition den required_keys Parameter enthält, müssen Sie Schlüssel-Wert-Paare für jeden erforderlichen Schlüssel in die get() Methodenargumentliste aufnehmen. Die folgende Tabellendefinition erfordert, dass die get() Methodenargumentliste ein user Argument mit einem Wert enthält, der dem Wert eines name Elements auf Hierarchieebene [edit system login user] entspricht:

In der get() Methode müssen Sie den erforderlichen Schlüssel in die Argumentliste aufnehmen. Andernfalls löst der Code eine ValueError-Ausnahme aus. Im folgenden Beispiel werden die Konfigurationsdaten für den Benutzer mit dem Namen "operator" angefordert:

Hinweis:

Wenn der Argumentname mit Bindestrich versehen ist, müssen Sie alle Bindestriche im Namen in Unterstriche ändern. Der Argumentwert ist jedoch eine Zeichenfolge und kann als solche Bindestriche enthalten.

Sie können das get() Methodenargument namesonly=True einschließen, um Konfigurationsdaten zurückzugeben, die nur Namensschlüssel auf der Hierarchieebene enthalten, die in der get Eigenschaft or set der Tabellendefinition angegeben ist.

Angenommen get , es ist beispielsweise definiert, um Konfigurationsdaten auf Hierarchieebene interfaces/interface abzurufen, und Sie schließen das namesonly=True Argument in die get() Methode ein, wenn Sie die Daten in Ihrem Junos PyEZ-Skript abrufen. In diesem Fall gibt die Methode nur die Werte in den Elementen zurück, die <name> direkte untergeordnete Elemente der interfaces/interface Hierarchieebene sind. Informationen in Elementen, die <name> gleichgeordnete Elemente des Elements sind, werden nicht zurückgegeben, und Daten für Elemente auf <name> niedrigeren Ebenen in der Hierarchie werden nicht zurückgegeben.

Angeben der Konfigurationsdatenbank

Standardmäßig rufen Junos PyEZ-Konfigurationstabellen Daten aus der Kandidatenkonfigurationsdatenbank ab. Wenn Sie die get() Methode im Python-Skript aufrufen, um die Tabellendaten abzurufen, können Sie angeben, dass die Methode stattdessen Daten aus der festgeschriebenen Konfigurationsdatenbank zurückgeben soll, indem Sie das options Argument übergeben und das 'database':'committed' Element in das options Wörterbuch aufnehmen.

Angeben von Vererbungs- und Gruppenoptionen

Sie können Vererbungs- und Gruppierungsoptionen beim Abrufen von Konfigurationsdaten mithilfe des options Arguments in der get() Methodenargumentliste steuern. Das options Argument nimmt ein Wörterbuch entgegen und ist standardmäßig auf den folgenden Wert festgelegt, der Vererbung und Gruppen für die zurückgegebenen Konfigurationsdaten anwendet:

Wenn Sie das options Argument in Ihrem Python-Skript nicht neu definieren, wird automatisch der Standardwert verwendet.

Die inherit Option gibt an, wie die Konfigurationsdaten Anweisungen anzeigen, die in Konfigurationsgruppen und Schnittstellenbereichen definiert sind. Standardmäßig ist die 'inherit':'inherit' Option enthalten, und die Konfigurationsdaten schließen Tag-Elemente, die von benutzerdefinierten Gruppen oder Schnittstellenbereichen geerbt wurden, in die erbenden Tag-Elemente ein, anstatt die <apply-groups-except><groups><apply-groups>, , oder <interface-range> -Elemente separat anzuzeigen. Um die Vererbung anzuwenden, aber auch Tag-Elemente für Anweisungen einzuschließen, die in der junos-defaults Gruppe definiert sind, verwenden Sie 'inherit':'defaults' im options Argument.

Um die Vererbung zu deaktivieren, legen Sie den Wörterbuchwert auf eine leere Zeichenfolge fest.

Wenn Sie sowohl die Option als 'groups':'groups' auch einschließen'inherit':'inherit', werden Konfigurationsdaten zurückgegeben, die auch die Konfigurationsgruppe angeben, von der Elemente geerbt werden. Ein Element, das von einer bestimmten Gruppe geerbt wird, enthält das junos:group="source-group" Attribut in seinem öffnenden Tag, wie im folgenden Beispiel gezeigt:

Um den Zugriff auf die Attribute in der Ansichtsdefinition zu ermöglichen, können Sie die entsprechende XPath-Syntax in die Feldzuordnung aufnehmen. Im folgenden Beispiel wird das ifgroup Feld definiert und dem Attribut des Interface-Elements <name> zugeordnetjunos:group:

Junos PyEZ stellt auch den Operator bereit, bei dem group es sich um eine Verknüpfungsmethode für den Zugriff auf das junos:group Attribut eines Elements handelt. Im folgenden Beispiel wird das ifgroup Feld definiert, das dem name Element mit dem group Operator zugeordnet wird. Wenn Sie innerhalb Ihres Skripts darauf zugreifen ifgroup , verweist es auf den Wert für das Attribut, das junos:group dem <name> Element der Schnittstelle zugeordnet ist.

Wenn ein Element nicht von einer Gruppe geerbt wird, ist der Wert eines Feldes, das auf das group Attribut verweist, .None

Zugreifen auf Tabellenelemente

Nachdem Sie die Konfigurationselemente abgerufen haben, können Sie sie wie ein Python-Wörterbuch behandeln, sodass Sie Methoden in der Python-Standardbibliothek verwenden können, um auf die Elemente zuzugreifen und sie zu bearbeiten.

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

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

Rufen Sie die values() Methode auf, um eine Liste der Felder oder Werte anzuzeigen, die den einzelnen Schlüsseln zugeordnet sind. Die values() Methode gibt eine Liste von Tupeln mit den Name-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, einschließlich Schlüssel und Werte, anzuzeigen.

Durchlaufen einer Tabelle

Tabellen unterstützen die Iteration, mit der Sie jedes Konfigurationselement auf die gleiche Weise durchlaufen können, wie Sie eine Liste oder ein Wörterbuch durchlaufen würden. So lassen sich gewünschte Felder schnell formatieren und drucken.

Die folgende Tabellendefinition extrahiert die system/login/user Elemente aus den Konfigurationsdaten:

Die folgende Junos PyEZ-Anwendung durchläuft die user Elemente und gibt den Namen und die Klasse jedes Benutzers aus:

Die username Felder und userclass , die in UserView definiert sind, entsprechen den Werten der name Elemente und class bzw. in den Konfigurationsdaten. Die Ausgabe enthält den Namen und die Klasse des Benutzers.

Obwohl UserView ein username Feld definiert, das dem name Element zugeordnet ist, verfügt jedes View-Element standardmäßig über eine name Eigenschaft, die auf den Schlüssel verweist, der dieses Element eindeutig identifiziert. Daher können Sie in diesem Beispiel auch verwenden user.name , um auf den Wert des name Elements zu verweisen.