使用 NETCONF 或 Junos XML 协议替换配置数据中的模式
从 Junos OS 15.1R1 版开始,在与运行 Junos OS 的设备的 NETCONF 或 Junos XML 协议会话中,您可以通过在执行<load-configuration>
操作时包括replace-pattern
属性来替换配置中的变量和标识符。该replace-pattern
属性将给定模式替换为另一个模式,无论是全局还是在配置中指示的层次结构或对象级别。例如,当 PIC 移动到路由器中的另一个插槽时,您可以使用此功能查找和替换接口名称的所有匹配项。该属性的功能与 Junos OS CLI 中的配置模式命令的功能replace pattern
相同。
替换模式操作只能与格式化为 Junos XML 标记元素的配置数据一起使用。
要替换模式,客户端应用程序会 <rpc>
发出 and <load-configuration>
标记元素,并包含 使用 Junos XML 协议创建、修改或删除配置元素中所述的基本 Junos XML 标记元素。在要替换模式的层次结构或对象级别,包括以下属性:
-
replace-pattern
- 要替换的模式。 -
with
- 替换模式。 -
upto
—(可选)要替换的出现次数。如果省略此属性或将其设置为零,设备将替换指定范围内模式的所有实例。
属性在配置中的位置决定了替换的范围,如以下各节所述。
在配置中全局替换模式
要在整个候选配置或开放配置数据库中全局替换模式,replace-pattern
请在开始<configuration>
标记中包含 and with
属性。
<rpc> <load-configuration> <configuration replace-pattern="pattern1" with="pattern2" [upto="n"]> </configuration> </load-configuration> </rpc>
例如,以下 RPC 将 172.17.1.5 的所有实例替换为 172.16.1.1:
<rpc> <load-configuration> <configuration replace-pattern="172.17.1.5" with="172.16.1.1"> </configuration> </load-configuration> </rpc>
执行 RPC 后,可以将更新的候选配置与活动配置进行比较,以验证模式替换。您必须提交配置才能使更改生效。
<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>
替换没有标识符的层次结构级别或容器对象中的模式
若要替换特定层次结构级别下的模式(包括其所有子级(或具有子级但没有标识符的容器对象),客户端应用程序会在表示层次结构级别或容器对象的空标记中包含 和 replace-pattern
with
属性。
<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>
以下 RPC 在层次结构级别将 [edit interfaces]
fe-0/0/1 的实例替换为 ge-1/0/1:
<rpc> <load-configuration> <configuration> <interfaces replace-pattern="fe-0/0/1" with="ge-1/0/1"/> </configuration> </load-configuration> </rpc>
执行 RPC 后,可以将更新的候选配置与活动配置进行比较,以验证模式替换。例如:
<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>
替换具有标识符的配置对象的模式
为了替换具有标识符的配置对象的模式,客户端应用程序在对象的开始标记中包含 and replace-pattern
with
属性,然后该标记将包含该对象的标识符标记元素。在以下示例中,标识符标记元素为 <name>
:
<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>
以下 RPC 将“4.5”的实例替换为“4.1”,但仅适用于层次结构下的 [edit interfaces]
fe-0/0/2 接口:
<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>
执行 RPC 后,可以将更新的候选配置与活动配置进行比较,以验证模式替换。例如:
<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>