使用 NETCONF 请求操作信息
在 NETCONF 会话中,客户端应用程序可以请求有关 Junos 设备当前状态的信息。要请求操作信息,客户端应用程序会从 Junos XML API 发出返回所需信息的特定请求标记元素。
表 1 提供了请求标签的示例,这些标签请求的信息与等效的 CLI 命令相同。
| 请求标记 | CLI 命令 |
|---|---|
<get-interface-information> |
show interfaces |
<get-chassis-inventory> |
show chassis hardware |
<get-system-inventory> |
show software information |
您可以使用多种方法确定相应的 Junos XML 请求标记,包括:
-
附加到
| display xml rpcCLI 中的操作命令。 -
使用 Junos XML API 资源管理器 - 操作 标记应用程序在给定版本中搜索命令或请求标记。
例如,以下命令显示与 show interfaces 命令对应的请求标记:
user@router> show interfaces | display xml rpc
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/23.4R1.9/junos">
<rpc>
<get-interface-information>
</get-interface-information>
</rpc>
</rpc-reply>
若要执行 RPC,客户端应用程序将请求标记括在元素中 <rpc> 。语法取决于相应的 CLI 命令是否包含任何选项。
<rpc>
<!-- If the command does not have options -->
<operational-request/>
<!-- If the command has options -->
<operational-request>
<!-- tag elements representing the options -->
</operational-request>
</rpc>
]]>]]>
客户端应用程序可以指定 NETCONF 服务器返回的信息的格式。通过在开始操作请求标记中设置可选 format 属性,客户端应用程序可以将响应的格式指定为 XML 标记格式(默认的格式化 ASCII 文本)或 JavaScript 对象表示法 (JSON)。有关指定格式的详细信息,请参阅 指定 NETCONF 会话中操作信息请求的输出格式。
显示包含 7 位 ASCII 字符集之外字符的操作或配置数据时,Junos OS 将使用等效的 UTF-8 十进制字符引用对这些字符进行转义和编码。有关更多信息,请参阅字符编码在瞻博网络设备上的工作原理。
如果客户端应用程序请求 XML 输出,NETCONF 服务器会将其响应包含在与请求标记元素对应的特定响应标记元素中,然后将其括在标记元素中 <rpc-reply> 。
<rpc-reply xmlns="URN" xmlns:junos="URL">
<operational-response xmlns="URL-for-DTD">
<!-- tag elements for the requested information -->
</operational-response>
</rpc-reply>
]]>]]>
例如,如果客户端应用程序发送 <get-interface-information> RPC,则 NETCONF 服务器将返回 <interface-information> 响应标记。
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/23.4R1.9/junos"> <interface-information xmlns="http://xml.juniper.net/junos/23.4R1.9/junos-interface" junos:style="normal"> <physical-interface> <name> ge-0/0/0 </name> <admin-status junos:format="Enabled"> up </admin-status> ...
对于 XML 格式,每个操作响应的开始标记都包含该 xmlns 属性。该属性为没有命名空间前缀的封闭标记元素定义 XML 命名空间(如 junos:)。命名空间指示哪个 Junos XML 文档类型定义 (DTD) 定义响应中的标记元素集。
Junos XML API 为来自不同软件模块的操作响应定义了单独的 DTD。例如,接口信息的 DTD 称为 junos-interface.dtd,机箱信息的 DTD 称为 junos-chassis.dtd。划分为单独的 DTD 和 XML 命名空间意味着具有相同名称的标记元素可以具有不同的功能,具体取决于它在哪个 DTD 中定义。
命名空间是以下形式的 URL:
http://xml.juniper.net/junos/release-code/junos-category
其中:
-
release-code 是表示在 NETCONF 服务器设备上运行的 Junos OS 版本的标准字符串。
-
category 指定 DTD。
如果客户端应用程序请求格式化 ASCII 文本的输出,NETCONF 服务器会将其响应括在标记元素中 <output> ,该元素包含在标记中 <rpc-reply> 。
<rpc-reply xmlns="URN" xmlns:junos="URL">
<output>
operational-response
</output>
</rpc-reply>
]]>]]>
如果客户端应用程序请求 JSON 格式的输出,NETCONF 服务器会将 JSON 数据包含在标记元素中 <rpc-reply> 。
<rpc-reply xmlns="URN" xmlns:junos="URL">
operational-response
</rpc-reply>
]]>]]>