我正在使用xml配置静态路由,我有一个关于xml结构的问题。这两种方法都起作用,我想知道它们之间是否有什么区别,还是它们都在做同样的事情。
方法1:使用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>方法2:使用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中一样?
谢谢
发布于 2014-04-29 04:22:42
这两种方法都起作用,我想知道它们之间是否有什么区别,还是它们都在做同样的事情。
它们都是XML文档,而且都有模式。CLI元素只是在内部以某种形式与设备不同的处理方式。
文档提出了重要的部分。两者的区别在于,使用方法2基本上是将命令“传递”给CLI解释器( CLI指令不支持的命令除外),设备上的XML代理将返回来自CLI的响应,CLI再次包装在XML文档中。除了API手册中提到的缺点之外,如果您正在做一些您需要编写脚本来完成的事情,这将是非常低效率的--为此,您肯定需要方法1。不过,它们最终都会做相同的事情。一种是更明确地使用基于模式的元素(数据序列化/解析/存储/检索等更容易),另一种是向CLI传递非序列化格式的响应(可能类似于特定的show命令,由于奇怪的边缘大小写需求而产生了一些疯狂的正则表达式)。
是否有一个工具可以接受CLI命令并将它们转换成xml模式,就像在方法1中一样?
你想解决什么问题?
这个StackOverflow问题提供了一个python库,可以用来实现这个功能(由编写申述的人编写--一个坚实的库),但是IOS可能能够生成从“显示运行”到XML的输出(尝试show run | format),但坦率地说,API指南链接的示例显示了更好/更理想的操作示例,这些示例将更容易地应用于创建自动化(如果这是最终目标)。
https://networkengineering.stackexchange.com/questions/7547
复制相似问题