使用 Junos XML 协议删除配置数据中的元素
在与运行 Junos OS 的设备进行 Junos XML 协议会话时,要从候选配置或开放配置数据库中删除配置元素(层次结构或配置对象),客户端应用程序会发出 使用 Junos XML 协议创建、修改或删除配置元素中描述的基本标记元素。使用 Junos XML 标记元素表示要删除的元素时,客户端应用程序将属性包括在 delete="delete" 每个元素的开始标记中。使用格式化的 ASCII 文本时,客户端应用程序将先于要删除的每个元素,并用 delete: 运算符删除。使用配置模式命令删除元素时,客户端应用程序将使用 delete 命令并指定元素的路径。使用 JSON 数据删除元素时,客户端应用程序将 "operation" : "delete" 属性包括在该元素的属性列表中。属性或运算符的放置取决于要删除的元素的类型,如下节所述:
您可以从 Junos OS 16.1 版开始加载使用 JavaScript 对象符号 (JSON) 格式的配置数据。
删除层级或容器对象
要删除层次结构级别及其所有子级(或无子级但无标识符的容器对象),客户端应用程序会为其父级别添加基本标记元素或配置语句,如 使用 Junos XML 协议创建、修改或删除配置元素中所述。
使用 Junos XML 标记元素时,应用程序在 delete="delete" 空标记中包含表示级别或容器对象的属性:
<configuration>
<!-- opening tag for each parent level -->
<level-or-object delete="delete"/>
<!-- closing tag for each parent level -->
</configuration>
使用格式化的 ASCII 文本时,应用程序将 delete: 语句置于要移除的级别之上,后跟分号(即使在现有配置中,后面还有将子语句括起来的花括号):
<configuration-text>
/* statements for parent levels */
delete:
object-or-level;
/* closing braces for parent levels */
</configuration-text>
使用配置模式命令时,应用程序会 delete 指定要移除的层级或对象的命令和语句路径。
<configuration-set>
delete statement-path-to-level-or-object
</configuration-set>
使用 JSON 配置数据删除层次结构级别或容器对象时,应用程序在层次结构或容器对象的属性列表中包括 "operation" : "delete" 属性:
<configuration-json>
{
"configuration" : {
/* JSON objects for parent levels */
"object-or-level" : {
"@" : {
"operation" : "delete"
}
}
/* closing braces for parent levels */
}
}
</configuration-json>
以下示例说明如何使用 Junos XML 标记元素从候选配置中移除 [edit protocols ospf] 层次结构级别:
以下示例说明如何使用以 JSON 格式的配置数据从候选配置中移除 [edit protocols ospf] 层次结构级别:
<rpc>
<load-configuration format="json">
<configuration-json>
{
"configuration" : {
"protocols" : {
"ospf" : {
"@" : {
"operation" : "delete"
}
}
}
}
}
</configuration-json>
</load-configuration>
</rpc>
删除具有标识符的配置对象
要删除具有标识符的配置对象,客户端应用程序会为其父级别添加基本标记元素或配置语句,如 使用 Junos XML 协议创建、修改或删除配置元素中所述。
使用 Junos XML 标记元素时,应用程序将 delete="delete" 属性包括在对象的开始标记中。在对象的容器标记元素中,它只包含标识符标记元素,而不是表示该对象任何其他特征的标记元素。在以下内容中,标识符标记元素称为 <name>:
<configuration>
<!-- opening tag for each parent of the object -->
<object delete="delete">
<name>identifier</name>
</object>
<!-- closing tag for each parent of the object -->
</configuration>
属性 delete 显示在打开的容器标记中,而不是在标识符标记元素中。标识符标记元素的存在会导致删除指定对象,而不是移除由容器标记元素表示的整个层次结构级别。
使用格式化的 ASCII 文本时,应用程序将 delete: 语句置于对象及其标识符之上:
<configuration-text>
/* statements for parent levels of the object */
delete:
object identifier;
/* closing braces for parent levels of the object */
</configuration-text>
使用配置模式命令时,应用程序会 delete 指定命令、对象的语句路径以及对象及其标识符。
<configuration-set>
delete statement-path-to-object object identifier
</configuration-set>
使用 JSON 配置数据时,应用程序将 "operation" : "delete" 属性包括在对象的属性列表中。在容器对象中,它只将代表标识符的名称/值对括起来。在以下示例中,指定元素标识符的 JSON 成员的字段名为“name”:
<configuration-json>
{
"configuration" : {
/* JSON objects for parent levels of the object */
"object" : [
{
"@" : {
"operation" : "delete"
},
"name" : "identifier"
}
]
/* closing braces for parent levels of the object */
}
}
</configuration-json>
以下示例使用 Junos XML 标记元素从候选配置中的[edit system login user]层次结构级别中移除用户对象barbara。
以下示例使用 JSON 格式的配置数据从候选配置中的[edit system login user]层次结构级别中移除用户对象barbara。
<rpc>
<load-configuration format="json">
<configuration-json>
{
"configuration" : {
"system" : {
"login" : {
"user" : [
{
"@" : {
"operation" : "delete"
},
"name" : "barbara"
}
]
}
}
}
}
</configuration-json>
</load-configuration>
</rpc>
从配置对象中删除单值或固定形式选项
要从配置对象中删除固定形式选项或只包含一个值的选项,客户端应用程序会为其父级别添加基本标记元素或配置语句,如 使用 Junos XML 协议创建、修改或删除配置元素中所述。(有关删除可包含多个值的选项的信息,请参阅 从配置对象的多值选项中删除值。)
使用 Junos XML 标记元素时,应用程序在每个选项的 delete="delete" 空标记中都包含属性。它不包括要保留在配置中的子项的标记元素。在以下内容中,该对象的标识符标记元素称为 <name>:
<configuration>
<!-- opening tag for each parent of the object -->
<object>
<name>identifier</name> <!-- if object has an identifier -->
<option1 delete="delete"/>
<option2 delete="delete"/>
<!-- tag elements for other options to delete -->
</object>
<!-- closing tag for each parent of the object -->
</configuration>
使用格式化的 ASCII 文本时,应用程序将 delete: 语句置于每个 选项之上:
<configuration-text>
/* statements for parent levels of the object */
object identifier;
delete:
option1;
delete:
option2;
/* closing braces for parent levels of the object */
</configuration-text>
使用配置模式命令时,应用程序会 delete 指定命令、选项的语句路径和要删除的选项。您可以指定 option 语句的完整路径,或导航至对象的层次结构级别,并从该位置删除 option 语句。使用单独命令删除每个选项。
<configuration-set>
delete statement-path-to-object object identifier option1
delete statement-path-to-object object identifier option2
</configuration-set>
<configuration-set>
edit statement-path-to-object object identifier
delete option1
delete option2
</configuration-set>
使用 JSON 配置数据删除选项时,应用程序将属性包括在 "operation" : "delete" 该选项的属性列表中。要删除层级或容器对象的选项,请指定要该级别删除的选项。
<configuration-json>
{
"configuration" : {
/* JSON objects for parent levels */
"level-or-object" : {
"@option1" : {
"operation" : "delete"
},
"@option2" : {
"operation" : "delete"
}
}
/* closing braces for parent levels */
}
}
</configuration-json>
要删除具有标识符的对象的选项,请先包含该标识符,然后指定要删除的选项。在以下示例中,指定元素标识符的 JSON 成员的字段名为“name”:
<configuration-json>
{
"configuration" : {
/* JSON objects for parent levels of the object */
"object" : [
{
"name" : "identifier",
"@option1" : {
"operation" : "delete"
},
"@option2" : {
"operation" : "delete"
}
}
]
/* closing braces for parent levels of the object */
}
}
</configuration-json>
以下示例说明如何使用 Junos XML 标记元素在[edit forwarding-options sampling]层次结构级别中移除固定格式disable选项。
从配置对象的多值选项中删除值
正如 将配置语句映射到 Junos XML 标记元素中所述,某些 Junos OS 配置对象是具有多个值的叶语句。在格式化的 ASCII CLI 表示中,值括在对象名称后的方括号中:
object [value1 value2 value3 ...];
Junos XML 表示不会为对象使用父标记,而是为每个值使用对象标记元素的单独实例。在以下内容中,标识符标记元素称为 <name>:
<parent-object>
<name>identifier</name>
<object>value1</object>
<object>value2</object>
<object>value3</object>
</parent-object>
要为此类对象移除一个或多个值,客户端应用程序应包括其父级别的基本标记元素或配置语句,如 使用 Junos XML 协议创建、修改或删除配置元素中所述。使用 Junos XML 标记元素时,应用程序 delete="delete" 在每个值开头的标记中包含属性。它不包括表示要保留的值的标记元素。在以下内容中,父对象的标识符标记元素称为 <name>:
<configuration>
<!-- opening tag for each parent of the parent object -->
<parent-object>
<name>identifier</name>
<object delete="delete">value1</object>
<object delete="delete">value2</object>
</parent-object>
<!-- closing tag for each parent of the parent object -->
</configuration>
使用格式化的 ASCII 文本时,应用程序会为每个值重复父语句,并将语句 delete: 置于每个配对语句和值之上:
<configuration-text>
/* statements for parent levels of the parent object */
parent-object identifier;
delete:
object value1;
delete:
object value2;
/* closing braces for parent levels of the parent object */
</configuration-text>
使用配置模式命令时,应用程序会 delete 指定命令、每个值的语句路径以及要移除的值。您可以指定值的完整路径,或导航至对象的层次结构级别,并从该位置删除值。使用单独命令删除每个值。
<configuration-set>
delete statement-path-to-parent-object parent-object identifier object value1
delete statement-path-to-parent-object parent-object identifier object value2
</configuration-set>
<configuration-set>
edit statement-path-to-parent-object parent-object identifier object
delete value1
delete value2
</configuration-set>
具有多值选项的对象采用 JSON 表示形式为名称/值对,其中字段名称为对象名称,表示选项的值为字符串阵列。Junos OS 不支持使用 JSON 从具有多值选项的对象中删除单个值。要更新选项列表,必须删除现有对象,然后使用所需的值集配置新对象。
以下示例说明如何使用 Junos XML 标记元素删除授予登录类的 user-accounts 两个权限。