使用 Junos XML 管理协议和 Junos XML API 的优势
Junos XML 管理协议和 Junos XML API 完全记录每个受支持的 Junos OS 操作请求的所有选项、Junos OS 配置层次结构中的所有语句以及等同于配置模式命令的基本操作。标记名称清楚地指示操作或配置请求或 配置语句中元素的功能。
通过将有意义的标记名称和 DTD 中的结构规则相结合,您可以轻松理解 XML 标记的数据集或文档的内容和结构。Junos XML 和 Junos XML 协议标记元素使从设备请求信息以解析输出和查找特定信息的客户端应用非常简单。
解析设备输出
以下示例说明了 Junos XML API 如何简化分析设备输出和提取所需信息。此示例比较了运行 Junos OS 的设备的格式化 ASCII 和 XML 标记的输出版本。
格式化的 ASCII 如下:
Physical interface: fxp0, Enabled, Physical link is Up Interface index: 4, SNMP ifIndex: 3
相应的 XML 标记版本为:
<interface> <name>fxp0</name> <admin-status>enabled</admin-status> <operational-status>up</operational-status> <index>4</index> <snmp-index>3</snmp-index> </interface>
当客户端应用需要从格式化的 ASCII 输出中提取特定值时,它必须依赖于值的位置,该值可以是绝对表示的,要么与相邻字段中的标签或值有关。假设客户端应用程序想要提取接口索引。它可以使用正则表达式匹配实用程序来查找特定字符串,但其中一个困难是接口索引中的位数不一定是可预测的。客户端应用不能简单地在标签后 Interface index:
读取特定数量的字符,而必须提取标签与后续标签 SNMP ifIndex:
之间的所有内容,并且还要考虑随附的逗号。
如果在更高版本的 Junos OS 中更改文本输出的格式或顺序,则会出现问题。例如,如果 Logical index:
按照接口索引号添加字段,则新格式化的 ASCII 可能会如下所示:
Physical interface: fxp0, Enabled, Physical link is Up Interface index: 4, Logical index: 12, SNMP ifIndex: 3
提取由 Interface index:
和 SNMP ifIndex:
标签分隔的接口索引号的应用程序现在会获得错误的结果。应用程序必须手动更新,以便搜索作为 Logical index:
新分隔符的标签。
相比之下,XML 标记输出的结构化特性使客户端应用程序可以通过提取开始 <index>
标记和结束 </index>
标记中的所有内容来检索接口索引。应用程序不必依赖于元素在输出字符串中的位置,因此 Junos XML 协议服务器可以在标记元素中 <interface>
按任意顺序发出子标记元素。在未来版本中添加新 <logical-index>
标记元素不会影响应用程序找到该 <index>
标记元素并提取其内容的能力。
显示设备输出
与格式化的 ASCII 输出相比,XML 标记的输出也更容易转换为不同的显示格式。例如,您可能希望不同时间显示有关给定设备组件的不同详细信息量。当设备返回格式化的 ASCII 输出时,您必须在显示程序中编写特殊例程和数据结构,以便提取和显示给定详细信息级别的相应信息。相比之下,XML 输出的固有结构是显示程序自身结构的理想基础。对于多个细节级别,使用相同的提取例程也很容易,只需忽略创建不太详细的显示时不需要的标记元素。