Ersetzen von Mustern in Konfigurationsdaten mithilfe von NETCONF oder Junos XML Protocol
Ab Junos OS Version 15.1R1, in einer NETCONF- oder Junos XML-Protokollsitzung mit einem Gerät, auf dem Junos OS ausgeführt wird, können Sie Variablen und Bezeichner in der Konfiguration ersetzen, indem Sie das replace-pattern
Attribut bei der Ausführung eines <load-configuration>
Vorgangs angeben. Das replace-pattern
Attribut ersetzt das angegebene Muster durch ein anderes Muster entweder global oder auf der angegebenen Hierarchie- oder Objektebene in der Konfiguration. Sie können beispielsweise diese Funktion verwenden, um alle Vorkommen eines Schnittstellennamens zu finden und zu ersetzen, wenn ein PIC an einen anderen Steckplatz im Router verschoben wird. Die Funktionalität des Attributs ist identisch mit der replace pattern
des Konfigurationsmodusbefehls in der Junos OS CLI.
Der Austauschmuster kann nur mit Konfigurationsdaten verwendet werden, die als Junos XML-Tag-Elemente formatiert sind.
Um ein Muster zu ersetzen, gibt eine Clientanwendung die <rpc>
Elemente und <load-configuration>
Tag-Elemente aus und umfasst die grundlegenden Junos XML-Tagelemente, die unter Erstellen, Ändern oder Löschen von Konfigurationselementen mit dem Junos XML-Protokoll beschrieben werden. Geben Sie auf der Hierarchie- oder Objektebene, auf der Sie das Muster ersetzen möchten, die folgenden Attribute ein:
-
replace-pattern
— Muster zum Ersetzen. -
with
— Austauschmuster. -
upto
—(Fakultativ) Anzahl der ereignisse, die ersetzt werden müssen. Wenn Sie dieses Attribut weglassen oder auf Null setzen, ersetzt das Gerät alle Instanzen des Musters innerhalb des angegebenen Bereichs.
Die Platzierung der Attribute innerhalb der Konfiguration bestimmt den Umfang des Austauschs, wie in den folgenden Abschnitten beschrieben.
Globales Ersetzen von Mustern innerhalb der Konfiguration
Um ein Muster in der gesamten Kandidatenkonfiguration oder der offenen Konfigurationsdatenbank global zu ersetzen, fügen Sie das und with
die replace-pattern
Attribute in das öffnend-Tag <configuration>
ein.
<rpc> <load-configuration> <configuration replace-pattern="pattern1" with="pattern2" [upto="n"]> </configuration> </load-configuration> </rpc>
Der folgende RPC ersetzt beispielsweise alle Instanzen von 172.17.1.5 durch 172.16.1.1:
<rpc> <load-configuration> <configuration replace-pattern="172.17.1.5" with="172.16.1.1"> </configuration> </load-configuration> </rpc>
Nach der Ausführung des RPC können Sie die aktualisierte Kandidatenkonfiguration mit der aktiven Konfiguration vergleichen, um den Musteraustausch zu überprüfen. Sie müssen die Konfiguration bestätigen, damit die Änderungen wirksam werden.
<rpc> <get-configuration compare="rollback" rollback="0" format="text"> </get-configuration> </rpc> <rpc-reply xmlns:junos="http://xml.juniper.net/junos/15.1R1/junos"> <configuration-information> <configuration-output> [edit groups global system ntp] - boot-server 172.17.1.5; + boot-server 172.16.1.1; [edit groups global system ntp] + server 172.16.1.1; - server 172.17.1.5; </configuration-output> </configuration-information> </rpc-reply>
Ersetzen von Mustern innerhalb eines Hierarchie- oder Containerobjekts ohne Bezeichner
Um ein Muster unter einer bestimmten Hierarchieebene zu ersetzen, einschließlich aller untergeordneten Objekte (oder eines Containerobjekts, das untergeordnete, aber keine Bezeichner hat), enthält eine Clientanwendung die replace-pattern
Attribute und with
Attribute im leeren Tag, das die Hierarchieebene oder das Containerobjekt darstellt.
<rpc> <load-configuration> <configuration> <!-- opening tag for each parent element --> <level-or-object replace-pattern="pattern1" with="pattern2" [upto="n"]/> <!-- closing tag for each parent element --> </configuration> </load-configuration> </rpc>
Der folgende RPC ersetzt Instanzen von fe-0/0/1 durch ge-1/0/1 auf [edit interfaces]
Hierarchieebene:
<rpc> <load-configuration> <configuration> <interfaces replace-pattern="fe-0/0/1" with="ge-1/0/1"/> </configuration> </load-configuration> </rpc>
Nach der Ausführung des RPC können Sie die aktualisierte Kandidatenkonfiguration mit der aktiven Konfiguration vergleichen, um den Musteraustausch zu überprüfen. Zum Beispiel:
<rpc> <get-configuration compare="rollback" rollback="0" format="text"> </get-configuration> </rpc> <rpc-reply xmlns:junos="http://xml.juniper.net/junos/15.1R1/junos"> <configuration-information> <configuration-output> [edit interfaces] - fe-0/0/1 { - unit 0 { - family inet { - address 10.0.1.1/27; - } - } - } + ge-1/0/1 { + unit 0 { + family inet { + address 10.0.1.1/27; + } + } + } </configuration-output> </configuration-information> </rpc-reply>
Ersetzen von Mustern für ein Konfigurationsobjekt mit einem Bezeichner
Um ein Muster für ein Konfigurationsobjekt mit einem Bezeichner zu ersetzen, enthält eine Clientanwendung die replace-pattern
Attribute und with
die Attribute im öffnenden Tag für das Objekt, das dann das Identifier-Tag-Element für dieses Objekt umschließt. Im folgenden Beispiel ist <name>
das Identifier-Tag-Element:
<rpc> <load-configuration> <configuration> <!-- opening tag for each parent element --> <container-tag replace-pattern="pattern1" with="pattern2" [upto="n"]> <name>identifier</name> </container-tag> <!-- closing tag for each parent element --> </configuration> </load-configuration> </rpc>
Der folgende RPC ersetzt Instanzen von "4.5" durch "4.1", jedoch nur für die fe-0/0/2-Schnittstelle unter der [edit interfaces]
Hierarchie:
<rpc> <load-configuration> <configuration> <interfaces> <interface replace-pattern="4.5" with="4.1"> <name>fe-0/0/2</name> </interface> </interfaces> </configuration> </load-configuration> </rpc>
Nach der Ausführung des RPC können Sie die aktualisierte Kandidatenkonfiguration mit der aktiven Konfiguration vergleichen, um den Musteraustausch zu überprüfen. Zum Beispiel:
<rpc> <get-configuration compare="rollback" rollback="0" format="text"> </get-configuration> </rpc> <rpc-reply xmlns:junos="http://xml.juniper.net/junos/15.1R1/junos"> <configuration-information> <configuration-output> [edit interfaces fe-0/0/2 unit 0 family inet] + address 10.0.4.1/30; - address 10.0.4.5/30; </configuration-output> </configuration-information>