使用 xml 配置 ASR9K

网络工程 思科
2021-07-21 05:41:32

我正在使用 xml 配置静态路由,我有一个关于 xml 结构的问题。这两种方式都有效,我想知道它们之间是否有任何区别,或者它们都做同样的事情。

方法一:使用xml模式

<?xml version="1.0" encoding="UTF-8"?>
<Request MajorVersion="1" MinorVersion="0">
  <Set>
    <Configuration>
      <RouterStatic MajorVersion="3" MinorVersion="2">
    <DefaultVRF>
      <AddressFamily>
        <VRFIPV4>
          <VRFUnicast>
        <VRFPrefixTable>
          <VRFPrefix>
            <Naming>
              <Prefix>
            <IPV4Address>200.0.0.0</IPV4Address>
              </Prefix>
              <PrefixLength>8</PrefixLength>
            </Naming>
            <VRFRoute>
              <VRFNextHopTable>
            <VRFNextHop>
              <Naming>
                <NextHopAddress>
                  <IPV4Address>192.168.1.2</IPV4Address>
                </NextHopAddress>
              </Naming>
            </VRFNextHop>
              </VRFNextHopTable>
            </VRFRoute>
          </VRFPrefix>
        </VRFPrefixTable>
          </VRFUnicast>
        </VRFIPV4>
      </AddressFamily>
    </DefaultVRF>
      </RouterStatic>
    </Configuration>
  </Set>
  <Commit Mode="Atomic" Label="IPV4_Static_Routes" Comment="IPV4 Static routes config updates"/>
</Request>

方法二:使用CLI封装标签

<?xml version="1.0" encoding="UTF-8"?>
<Request MajorVersion="1" MinorVersion="0">
    <CLI>
        <Configuration>
                router static
                address-family ipv4 unicast
                200.0.0.0/8 192.168.1.2 
            </Configuration>
    </CLI>  
    <Commit/>
</Request>

另一方面,是否有一种工具可以接受 CLI 命令并将它们转换为 xml 模式,就像方法 1 一样?

谢谢

1个回答

这两种方式都有效,我想知道它们之间是否有任何区别,或者它们都做同样的事情。

它们都是 XML 文档,并且都有模式。这些CLI元素只是以某种形式在设备内部进行了不同的处理。

IOS-XR XML API文档调出重要的部分。两者的区别在于,使用方法 2 基本上是将命令(通过 CLI 指令不支持的命令除外)“传递”给 CLI 解释器,设备上的 XML 代理将返回来自 CLI 的响应,这又是一次包装在一个 XML 文档中。除了 API 手册中提到的缺点之外,如果您正在做一些需要编写脚本的事情,这将非常低效 - 为此,您肯定需要方法 1。但最终,它们都做同样的事情. 一种更明确地使用基于模式的元素(更容易进行数据序列化/解析/存储/检索等),另一种只是将您期望以非序列化格式响应的内容传递给 CLI(可能类似于一个特定的show 由于奇怪的边缘情况要求,使用一些疯狂的正则表达式命令)。

有没有一个工具,它接受 CLI 命令并将它们转换成 xml 模式,就像方法 1 一样?

你想解决什么问题?

一个StackOverflow 问题,其中包含一个可用于此的 python 库(由编写exscript的同一个人编写- 一个可靠的库)但 IOS-XR 可能能够将输出从“show run”生成到 XML(尝试show run | format) ,但坦率地说,链接的 API 指南显示了更好/更理想的操作示例,这些示例将更容易应用于创建自动化(如果这是这里的最终目标)。