Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Verwenden von Junos PyEZ zum Abrufen einer Konfiguration

ZUSAMMENFASSUNG Sie können Junos PyEZ-Anwendungen erstellen, die Konfigurationsdaten aus der angegebenen Konfigurationsdatenbank auf einem Junos-Gerät abrufen.

Junos PyEZ-Anwendungen können bei Bedarf Remote Procedure Calls (RPCs) auf Junos-Geräten ausführen. Nach dem Erstellen einer Instanz der Device Klasse kann eine Anwendung RPCs als Eigenschaft der Device Instanz ausführen. Junos PyEZ-Anwendungen können den get_config() RPC verwenden, um die vollständige Konfiguration oder ausgewählte Teile der Konfiguration sowohl für die native Junos OS-Konfiguration als auch für Konfigurationsdaten anzufordern, die Standard- (IETF, OpenConfig) oder benutzerdefinierten YANG-Datenmodellen entsprechen, die dem Gerät hinzugefügt wurden.

Hinweis:

Der Junos PyEZ-RPC get_config ruft den Junos XML-Protokollvorgang <get-configuration> auf. Weitere Informationen zum <get-configuration> Vorgang und seinen Optionen finden Sie unter <get-configuration>.

In diesem Thema wird erläutert, wie Sie die Konfiguration mithilfe des Junos PyEZ-RPC get_config() abrufen. Weitere Informationen zur Verwendung von Tabellen und Ansichten zum Abrufen von Konfigurationsdaten finden Sie unter Definieren von Junos PyEZ-Konfigurationstabellen und Verwenden von Junos PyEZ-Konfigurationstabellen zum Abrufen von Konfigurationsdaten.

Abrufen der vollständigen Kandidatenkonfiguration

Führen Sie den get_config() RPC aus, um die vollständige Kandidatenkonfiguration von einem Junos-Gerät abzurufen. Das Standardausgabeformat ist XML. Zum Beispiel:

Angeben der Quelldatenbank für die Konfigurationsdaten

Wenn eine Junos PyEZ-Anwendung den get_config() RPC verwendet, um Konfigurationsinformationen von einem Junos-Gerät abzurufen, gibt der Server standardmäßig Daten aus der Kandidatenkonfigurationsdatenbank zurück. Eine Junos PyEZ-Anwendung kann auch Konfigurationsdaten aus der festgeschriebenen Konfigurationsdatenbank oder der kurzlebigen Konfigurationsdatenbank abrufen.

Kandidatenkonfigurationsdatenbank

Um Daten aus der Kandidatenkonfigurationsdatenbank abzurufen, führen Sie den get_config() RPC aus, und schließen Sie optional zusätzliche Argumente ein.

Festgeschriebene Konfigurationsdatenbank

Um Daten aus der festgeschriebenen Konfigurationsdatenbank abzurufen, schließen Sie das options Argument with 'database':'committed' in den get_config() RPC-Aufruf ein.

Kurzlebige Konfigurationsdatenbank

Junos PyEZ unterstützt Vorgänge in der kurzlebigen Konfigurationsdatenbank auf Geräten, die diese Datenbank unterstützen. Beim Abrufen von Konfigurationsdaten aus der freigegebenen Konfigurationsdatenbank enthalten die Ergebnisse standardmäßig keine Daten aus der kurzlebigen Konfigurationsdatenbank.

Hinweis:

Bei der kurzlebigen Datenbank handelt es sich um eine alternative Konfigurationsdatenbank, die eine schnelle programmgesteuerte Schnittstelle zum Ausführen von Konfigurationsupdates auf Junos-Geräten bereitstellt. Die flüchtige Konfigurationsdatenbank ist eine erweiterte Funktion, die bei falscher Verwendung schwerwiegende negative Auswirkungen auf den Betrieb des Geräts haben kann. Weitere Informationen finden Sie unter Grundlegendes zur kurzlebigen Konfigurationsdatenbank.

Um Daten aus der Standardinstanz der kurzlebigen Konfigurationsdatenbank abzurufen, öffnen Sie zuerst die kurzlebige Standardinstanz, und fordern Sie dann die Daten an. Um die Standardinstanz zu öffnen, verwenden Sie einen Kontext-Manager, um die Config Instanz zu erstellen, und fügen Sie das Argument mode='ephemeral' ein. Zum Beispiel:

Um Daten aus einer bestimmten Instanz der kurzlebigen Konfigurationsdatenbank abzurufen, öffnen Sie zuerst die kurzlebige Instanz, und fordern Sie dann die Daten an. Um eine benutzerdefinierte Instanz der kurzlebigen Konfigurationsdatenbank zu öffnen, verwenden Sie einen Kontext-Manager, um die Config Instanz zu erstellen, das Argument mode='ephemeral' einzuschließen und das ephemeral_instance Argument auf den Namen der kurzlebigen Instanz festzulegen.

Geben Sie den Umfang der zurückzugebenden Konfigurationsdaten an

Zusätzlich zum Abrufen der vollständigen Junos OS-Konfiguration kann eine Junos PyEZ-Anwendung bestimmte Teile der Konfiguration abrufen, indem sie den get_config() RPC mit dem filter_xml Argument aufruft. Der filter_xml Parameter akzeptiert eine Zeichenfolge, die den Unterstrukturfilter enthält, der die zurückzugebenden Konfigurationsanweisungen auswählt. Der Teilbaumfilter gibt die Konfigurationsdaten zurück, die den Selektionskriterien entsprechen.

Um mehrere Hierarchien anzufordern, muss die filter_xml Zeichenfolge das <configuration> Stammelement enthalten. Andernfalls muss der Wert von filter_xml alle Ebenen der Konfigurationshierarchie darstellen, beginnend direkt unter dem Stammelement <configuration> bis zur anzuzeigenden Hierarchie. Um einen Teilbaum auszuwählen, fügen Sie das leere Tag für diese Hierarchieebene ein. Um ein bestimmtes Objekt zurückzugeben, schließen Sie einen Inhaltsübereinstimmungsknoten ein, der das Element und den Wert definiert, die abgeglichen werden sollen.

Die folgende Junos PyEZ-Anwendung ruft die Konfiguration auf der und [edit protocols] der [edit interfaces] Hierarchieebene in der Kandidatenkonfiguration ab und druckt sie:

Im folgenden Beispiel wird die Konfiguration auf Hierarchieebene [edit system services] mit unterschiedlichen, aber äquivalenten Werten für das filter_xml Argument abgerufen und gedruckt:

Im folgenden Beispiel wird das <name> Element für jedes <interface> Element unter der <interfaces> Hierarchie in der Kandidatenkonfiguration nach der Vererbung abgerufen:

Im folgenden Beispiel wird die Teilstruktur für die Schnittstelle ge-1/0/1 abgerufen:

Geben Sie das Format für die zurückzugebenden Konfigurationsdaten an

Der Junos PyEZ-RPC get_config() ruft den Junos XML-Protokollvorgang <get-configuration> auf, der Junos OS-Konfigurationsdaten als Junos XML-Elemente, CLI-Konfigurationsanweisungen, Junos OS-Befehle set oder JavaScript Object Notation (JSON) zurückgeben kann. Standardmäßig gibt der get_config() RPC Konfigurationsdaten als XML zurück.

Um das Format anzugeben, in dem die Konfigurationsdaten zurückgegeben werden sollen, nimmt die Junos PyEZ-Anwendung das options Wörterbuch mit 'format':'format' in die get_config() Argumentliste auf. Um CLI-Konfigurationsanweisungen, Junos OS-Befehle set oder das JSON-Format anzufordern, legen Sie den format Wert auf text, setbzw json. , fest.

Wie in NETCONF- und Junos XML-Protokollsitzungen gibt Junos PyEZ die Konfigurationsdaten im erwarteten Format zurück, das im entsprechenden XML-Element für dieses Format enthalten ist. Die RPC-Antwort schließt Konfigurationsdaten in XML-, Text- oder set Befehlsformaten in <configuration>, <configuration-text>bzw <configuration-set> . -Elementen ein.

Hinweis:

Abhängig von der Python-Version und dem Format der Ausgabe müssen Sie möglicherweise die print-Anweisung ändern, um eine besser lesbare Ausgabe anzuzeigen.

Abrufen von Konfigurationsdaten für standardmäßige oder benutzerdefinierte YANG-Datenmodelle

Sie können standardisierte oder benutzerdefinierte YANG-Module auf Junos-Geräte laden, um Datenmodelle hinzuzufügen, die von Junos OS nicht nativ unterstützt werden, aber durch Übersetzung unterstützt werden können. Sie konfigurieren nicht-native Datenmodelle in der Kandidatenkonfiguration mit der Syntax, die für diese Modelle definiert ist. Wenn Sie einen Commit für die Konfiguration ausführen, werden diese Daten von den Übersetzungsskripts des Datenmodells übersetzt und die entsprechende Junos OS-Konfiguration als vorübergehende Änderung in der Checkout-Konfiguration übernommen.

Die Kandidaten- und aktiven Konfigurationen enthalten die Konfigurationsdaten für nicht native YANG-Datenmodelle in der Syntax, die durch diese Modelle definiert ist. Junos PyEZ-Anwendungen können Konfigurationsdaten für standardmäßige und benutzerdefinierte YANG-Datenmodelle zusätzlich zur nativen Junos OS-Konfiguration abrufen, indem sie die entsprechenden Argumente in den get_config() RPC aufnehmen. Standardmäßig sind nicht native Konfigurationsdaten nicht in der get_config() RPC-Antwort enthalten.

Um Konfigurationsdaten abzurufen, die durch ein nicht natives YANG-Datenmodell definiert sind, führen Sie zusätzlich zum Abrufen der Junos OS-Konfiguration den get_config() RPC mit dem model Argument aus und schließen Sie das Argument namespace ggf. ein. Das model Argument nimmt einen der folgenden Werte an:

  • custom: Rufen Sie Konfigurationsdaten ab, die durch benutzerdefinierte YANG-Datenmodelle definiert sind. Sie müssen das Argument namespace beim Abrufen von Daten für benutzerdefinierte YANG-Datenmodelle einschließen.

  • ietf: Rufen Sie Konfigurationsdaten ab, die durch IETF YANG-Datenmodelle definiert sind.

  • openconfig– Rufen Sie Konfigurationsdaten ab, die durch OpenConfig YANG-Datenmodelle definiert sind.

  • True– Rufen Sie alle Konfigurationsdaten ab, einschließlich der vollständigen Junos OS-Konfiguration und Daten aus beliebigen YANG-Datenmodellen.

Wenn Sie den ietf Wert or openconfig für das model Argument angeben, verwendet Junos PyEZ automatisch den entsprechenden Namespace. Wenn Sie Daten für ein benutzerdefiniertes YANG-Datenmodell mit abrufen model='custom', müssen Sie das namespace Argument auch in den entsprechenden Namespace einschließen.

Wenn Sie das Argument model mit dem Wert custom, ietfoder openconfig und auch das filter_xml Argument einschließen, um eine bestimmte XML-Unterstruktur zurückzugeben, gibt Junos OS nur die entsprechende Hierarchie aus dem nicht nativen Datenmodell zurück. Wenn die Junos OS-Konfiguration eine gleichnamige Hierarchie enthält, z. B. "Schnittstellen", wird sie nicht in die Antwort aufgenommen. Die filter_xml Option wird nicht unterstützt, wenn .model=True

Im folgenden Beispiel ruft der get_config() RPC die OpenConfig-Konfigurationshierarchie bgp aus der Kandidatenkonfiguration auf dem Gerät ab. Wenn Sie das Argument filter_xml weglassen, gibt der RPC die vollständigen Konfigurationen für Junos OS und OpenConfig-Kandidaten zurück.

Der folgende RPC ruft die interfaces Konfigurationshierarchie aus der Kandidatenkonfiguration für ein IETF-YANG-Datenmodell ab:

Der folgende RPC ruft die l2vpn Konfigurationshierarchie aus der Kandidatenkonfiguration für ein benutzerdefiniertes YANG-Datenmodell mit dem angegebenen Namespace ab:

Der folgende RPC ruft die vollständige Junos OS-Kandidatenkonfiguration sowie die Konfigurationsdaten für andere YANG-Datenmodelle ab, die dem Gerät hinzugefügt wurden:

Angeben zusätzlicher RPC-Optionen

Wenn Sie den Junos PyEZ-RPC get_config() zum Abrufen der Konfiguration verwenden, wird der Junos XML-Protokollvorgang <get-configuration> aufgerufen. Der RPC unterstützt das Argument, mit dem options Sie ein Wörterbuch mit Schlüssel-Wert-Paaren aller vom Vorgang unterstützten <get-configuration> Attribute einschließen können. Eine vollständige Liste der Attribute, die vom Junos XML-Protokollvorgang <get-configuration> unterstützt werden, finden Sie unter <get-configuration>.

Der get_config() RPC ruft z. B. Daten aus der Konfiguration vor der Vererbung ab, in der , <apply-groups-except><groups><apply-groups>, und <interface-range> Tags separate Elemente in der Konfigurationsausgabe sind. Um Daten aus der Konfiguration nach der Vererbung abzurufen, die Anweisungen, die von benutzerdefinierten Gruppen und Bereichen geerbt wurden, als untergeordnete Elemente der erbenden Anweisungen anzeigt, können Sie das Argument options mit 'inherit':'inherit'einschließen.

Mit dem folgenden Code wird z. B. die Konfiguration auf Hierarchieebene [edit system services] aus der Kandidatenkonfiguration nach der Vererbung abgerufen. Wenn die Konfiguration in diesem Fall auch Anweisungen enthält, die auf Hierarchieebene [edit groups global system services] konfiguriert sind, werden diese Anweisungen unter der [edit system services] Hierarchie in der Konfiguration nach der Vererbung geerbt und in den abgerufenen Konfigurationsdaten zurückgegeben.

Behandeln von Namespaces in Konfigurationsdaten

Der Junos PyEZ-RPC get_config() entfernt standardmäßig alle Namespaces in den zurückgegebenen Konfigurationsdaten. Junos PyEZ-Anwendungen können den Namespace in den zurückgegebenen Konfigurationsdaten beibehalten, sodass Sie die Daten wieder auf ein Gerät laden können, z. B. wenn Sie die vorhandene Konfiguration schnell ändern möchten.

Um Namespaces in den Konfigurationsdaten beizubehalten, schließen Sie das Argument remove_ns=False in die get_config() Argumentliste ein. Zum Beispiel:

In der folgenden abgeschnittenen Ausgabe behält das <bgp> Element das Attribut bei, das xmlns den Namespace definiert:

Wenn das Argument get_config() remove_ns=False weggelassen wird, ist der Namespace nicht in der Ausgabe enthalten.