Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

将Junos OS语句映射到 JSON

运行 Junos OS 的配置作为语句的层次结构存储。配置语句层次结构包含两种类型的语句:

  • 容器语句— 包含其他语句的语句

  • 叶语句— 不包含其他语句的语句

所有容器和叶语句共同构成 配置层次结构

除了格式化的 ASCII 文本、Junos XML 元素和配置模式命令之外,还可以使用 JavaScript Object Notation (JSON) 表示配置 set 层次结构。从 Junos OS 14.2 版开始,您可以通过在 CLI 中执行 命令来查看以 JSON 格式运行 Junos OS show configuration | display json 设备的CLI。此外,从 Junos OS 16.1 版开始,您可以在设备上加载 JSON 格式的配置数据。

注意:

从 16.1 Junos OS开始,运行 Junos OS 的设备会使用新的序列化默认实施来发出 JSON 格式的配置数据。您可以通过在 层次结构级别配置相应的语句来显式配置 新的 默认值 , 或 恢复到 ietf verbose 之前的 [edit system export-format json] 默认设置。您可以配置从 Junos OS版本16.1R1语句,即使该语句Junos OS CLI到 verbose 更高版本。

注意:

从 Junos OS 版16.1R4、16.2R2 和 17.1R1 版开始,JSON 格式发出的 Junos OS 配置数据的整数不会用引号括住。在早期版本中,JSON 配置数据中的整数被视为字符串,并括在引号中。

以下部分介绍格式的 ASCII 文本与用于 JSON 中的配置语句Junos OS格式之间的映射:

层次结构级别和容器语句的映射

Junos OS 配置层次结构由具有单个顶级成员或名称/值对的 JSON 对象表示,JSON 对象将字段名称设置为 ,值中包含代表整个配置的 JSON 对象。 "configuration"configuration成员与配置 [edit] 模式下的层次结构CLI对应。在配置层次结构的下几个级别中,大多数语句都是容器语句。

在 JSON 中,每个Junos OS层次结构级别或容器语句都是其父对象的成员。成员或名称/值对有一个字段名称对应于层次结构或容器的名称。其值是一个 JSON 对象,包含代表子容器和该层级的叶语句的成员。对象还可以包含一个成员,其中包含与该层次结构相关联的属性列表(如果有)。

以下示例显示配置层次结构顶层两个语句的格式化 ASCII 文本和 JSON 之间的映射:

CLI配置语句

JSON 语法

映射具有标识符的对象

在某些层次结构级别中,同一配置对象可以多次发生。对象的每个实例都有唯一的标识符,用于将其与其他实例区分。在CLI表示法中,此类对象的父语句可能由关键字和标识符或只是一个标识符组成。

keyword 是一个固定字符串,用于指示要定义的对象类型,也是该类型实例 identifier 的唯一名称。在下面的示例中, user 是 关键字 , 是 username 标识符。

在 JSON 中,配置对象的所有实例均包含在单个名称/值对中,其中字段名称通常与字符串匹配,并且该值是一组 JSON 对象,每个对象都是配置对象的实例。 keyword JSON 语法不同于CLI标识符的处理方法。在 JSON 中,配置对象的每个实例都对标识符使用名称/值对,其中字段名称将此数据识别为标识符,并且值是对象的实际唯一标识符。通常,字段名称只是 name 。某些对象有多个标识符,可能会使用字段名称,而非 name 。指定标识符的 JSON 数据始终在相应对象中列出,但在此对象包括的任何属性列表之后。

注意:

Junos OS保留配置 junos- 组内定义的配置组的标识符 junos-defaults 的前缀。用户定义的标识符不能从字符串开始 junos-

大多数具有标识符的对象的配置包含附加叶语句,表示对象的其他特征。例如,在层次结构级别BGP组都有一个关联名称(标识符),并可以具有其他特性的叶语句,例如类型、对等自治系统 (AS) 编号和邻接方地址。 [edit protocols bgp group] 有关叶语句的 JSON 映射的信息,请参阅 单值和固定形式叶语句 的映射

以下示例显示将格式化的 ASCII 文本映射到 JSON,用于定义两个名称为 G1 和 G2 BGP组的配置语句。在 JSON 语法中,该成员的值是一个阵列,包含每个组 group 单独的 JSON BGP。

CLI配置语句

JSON 语法

单值和固定形式叶语句的映射

语句 是不包含CLI语句的一个配置语句。大多数叶语句都为配置对象的一个特性定义了一个值,其形式如下:

Junos OS叶语句映射到 JSON 中的名称/值对。通常,字段名称与字符串相同,并且值 keyword 与字符串 value 相同。

以下示例显示两个包含关键字和值的叶语句的 JSON 映射:层级的 语句和 层次结构级别的 message [edit system login] preference [edit protocols ospf] 语句。

CLI配置语句

JSON 语法

某些叶语句仅包含固定格式关键字,没有关联的可变形式值。Junos OS 将名称/值对中的值设置为 ,来表示 JSON 中的此类 [null] 语句。以下示例显示 语句在层级的 JSON disable [edit forwarding-options sampling] 映射。

CLI配置语句

JSON 语法

使用多个值的叶语句的映射

某些Junos OS叶语句接受多个值,可以是用户定义的值,也可从一组预定义值绘制。CLI表示法使用方括号将所有值括在单个语句中,如以下示例所示:

"为单值和固定形式叶语句映射"中讨论,叶语句将映射到 JSON 中的名称/值对,JSON 中的字段名称与字符串 keyword 相同。要表示多个值,JSON 数据的值部分使用一系列逗号分隔字符串。

以下示例显示使用多个用户定义值CLI语句的 JSON 映射。语句 import 导入在配置其他位置定义的两个路由策略。格式化的 ASCII 文本使用空间分隔的值列表,而 JSON 数据使用用逗号分隔字符串列表的阵列。

CLI配置语句

JSON 语法

以下示例显示具有多个预定义值的 CLI 语句的 JSON 映射。该 permissions 语句向登录类的成员授予三个预定义 user-accounts 的权限。

CLI配置语句

JSON 语法

在一行或多行上映射多个选项

对于某些Junos OS配置对象,标准CLI语法在单个行中提供了多个选项,通常增加简洁性和简洁性。在大多数情况下,第一个选项标识对象且没有关键字,但后来将选项与关键字和值配对。

在 JSON 中,相同的配置对象映射到一个名称/值对。字段名称与对象名称相同,值是一个 JSON 对象,其中包含由名称/值对表示的选项。如果第一个选项在 CLI 语句中没有关键字,JSON 映射将分配一个名称,这等同于在模式中定义的选项名称,用于相应的 Junos XML 标记名称。

以下示例显示单个线路上多个CLI配置语句的 JSON 映射。语句的 JSON 表示为两个选项使用名称/值对,并分配没有关键字的第一个选项 [edit system backup-router] address (10.0.0.1) 的CLI名称。

CLI配置语句

JSON 语法

某些配置对象的语法包括多个多选项行。在 JSON 中,配置对象映射到名称/值对,如上一用例中。字段名称与对象名称相同,值是一个 JSON 对象,其中包含由名称/值对表示的选项。对于每个选项,字段名称都与选项名称相同,值是一个 JSON 数据结构,可相应表示此选项的配置数据。当选项使用相同的关键字但跨越多个行时,JSON 表示将选项组合为单个名称/值对。在这种情况下,该值是一系列 JSON 对象,其中每个选项都映射到一个独立对象。

以下示例显示 语句在层级的 JSON traceoptions [edit protocols isis] 映射。该 traceoptions 语句具有三个子语句,每个子语句有多个选项。JSON CLI表示法在单独行上显示各个选项,但 JSON 表示法将详细信息组合为 flag flag 单个名称/值对。该值是一系列对象,其中每个对象都包含一个标志的详细信息。

CLI配置语句

JSON 语法

属性映射

该Junos OS配置层次结构可以包含用于修改层次结构或语句的标记。例如,如果发出 命令以停用配置中的语句,则标记会预先标记到配置中的项, deactivate inactive: 以指示此属性。Junos XML API 将属性表示为 XML 元素开放标记中的属性。

该配置中的 JSON 表示Junos OS元数据注释来表示这些属性。元数据注释将编码为单个 JSON 对象的成员,并在其名称中包括"@"符号。

代表容器语句属性列表的元数据对象将添加为该对象的新产品。元数据对象直接放在其修改的容器对象中,并使用单个"@"符号作为成员名称。代表叶语句属性列表的元数据对象将添加为一个面值名称/值对,该名称直接在修改语句之后放置,并且具有与"@" 符号和语句名称串联的成员名称。这两种情况下的元数据对象值都是包含名称/值对的对象,用于描述与该容器或叶语句关联的每个属性。

在下面的示例中,层次结构和 [edit commit] persist-groups-inheritance 语句已停用。在 CLI 中,语句前面是 inactive: 标记。Junos XML 表示包括 inactive="inactive" 这些元素的每个开始标记中的属性。JSON 映射将属性存储在属性列表中。层次结构的属性列表 [edit commit] 以"@"表示,因为它是容器语句。该语句的属性 persist-groups-inheritance 列表使用"@persist组继承"表示,因为它是叶语句。

CLI配置语句

XML 语法

JSON 语法

对象特定实例的属性列表类似于容器的属性列表,其中名称/值对,其中字段名称为单个"@"符号,值是包含名称/值对的对象,用于描述每一个属性。属性列表包含在 JSON 对象中,用于标识该实例,是对象中第一个成员,然后是对象的标识符。

在下面的示例中,ge-0/0/0 接口受到保护。在CLI中,对象前面是 protect: 标记。该Junos XML 表示包括 protect="protect" 此对象的开放标记中的属性。JSON 映射将属性存储在识别该特定接口的 JSON 对象中包含的 "protect" : true 属性列表中。

CLI配置语句

XML 语法

JSON 语法

映射配置注释

配置Junos OS可包含介绍配置中的语句的注释。使用 ASCII 文本或 Junos XML 元素格式化的配置数据显示注释修改语句之前行的注释。在Junos XML 格式中,注释字符串包含于元素 <junos:comment> 中。

注释使用两个分隔符之一表示:成对字符串和分隔符(注释括起来)或 /* */ # 注释之前的字符。在配置中插入注释时,您可以使用注释字符串中的任一分隔符。如果省略分隔符,Junos OS将自动插入 /* */ 和 。

注意:

Junos OS保留注释中包含的任何空格。

Junos OS JSON 格式的配置数据将注释映射到名称/值对,该名称/值对作为其修改的语句属性存储。字段名称设置为 "comment" ,值是注释文本字符串。注释文本字符串可以包含两个表示注释的分隔符之一。如果在加载 JSON 配置数据时省略注释文本字符串中的分隔符,Junos OS将自动为注释添加 和分隔 /* */ 符。您也可在 JSON 配置数据中创建多行注释,方法为在注释字符串中插入线字符 ( \n )。

以下示例显示三个注释的格式化 ASCII 配置和相应的 JSON 语法。该示例将一个注释与层次结构关联,将另一个注释与具有标识符的对象关联,将第三个注释与叶语句关联。

CLI配置语句

JSON 语法

版本历史记录表
释放
描述
16.1R4
从 Junos OS 版16.1R4、16.2R2 和 17.1R1 开始,JSON 格式Junos OS中发出的 Junos OS 配置数据的整数不会用引号括住。在早期版本中,JSON 配置数据中的整数被视为字符串,并括在引号中。
16.1
从 16.1 Junos OS开始,运行 Junos OS 的设备会使用新的序列化默认实施来发出 JSON 格式的配置数据。