Cisco IOS“显示conf”到XML?

时间:2009-07-27 22:32:52

标签: xml schema xsd cisco

是否有:

一个免费提供的程序,可以将思科“show conf”的输出转换为一些合理的XML,比如这个(可能不是很明智的)块形式:

<aaa>
  <new-model/>
  <authentication>
    <login>
      <default>
        <group id="tacacs+">enable</group>
      </defult>
    </login>

    <!-- ...etc... -->

  </authentication>
</aaa>

...或者,如果没有,在我可以实现的XML架构中?如果不深入了解IOS语法,那么构建模式就会变得非常棘手。

2 个答案:

答案 0 :(得分:2)

思科没有为IOS配置提供架构。但是,您可以有两种选择:

  • Cisco的IOS XR具有内置的XML支持。根据路由器的型号,您可以升级。您必须启用“xml-agent”功能才能使其正常工作。请注意,此功能并不总是被认为是可靠的(最后我们检查过有些错误导致我们无法使用它),但它应该对很多人来说已经足够了。

  • 如果升级不是一个选项,那就是这个可怕的丑陋黑客(这是我的错):

http://code.google.com/p/text2xml/

它带有IOS语法(存储库中的syntax / ios.def),支持将大量命令转换为XML,但绝不完整。尽管如此,它仍适用于大量非常复杂的配置,并且扩展它以支持新的IOS命令应该仅仅是将新命令添加到(痛苦地不可读且难以理解)语法定义中。

您仍然希望将生成的XML转换为更稳定的XML,但XML转换比解析IOS(这是一个皇家PITA)更容易。

[编辑] 上面的答案现在基本上已经过时了:我写了Gelatin,它允许您将IOS和IOS XR配置转换为XML,JSON或YAML - 无论您喜欢哪个。这基本上是上述丑陋黑客的替代品,但有以下不同之处:

  • 我不再称之为丑陋的黑客。我其实为此感到非常自豪,所以不要让我失望!更严重的是,如果您发现任何问题,请告诉我,我会解决它。
  • 使用纯Python编写,不再编译为C,这使得它更易于使用和安装。 (此外,无论如何,生成C代码所带来的性能提升并不重要。)
  • 语法方式更容易理解。还有一些文件。
  • 解析器更加稳定。

简短的操作方法:

  • 下载并安装Gelatin:

    git clone git://github.com/knipknap/Gelatin.git
    cd Gelatin
    sudo python setup.py install
    
  • 该软件包包含IOS语法(syntax / ios / show_running_config / syntax.gel)和IOS XR的另一种语法(syntax / ios_xr / show_running_config / syntax.gel)。

  • 使用以下命令将配置转换为XML:

    gel -s syntax.gel config.txt
    

如果失败,请file a bug使用不起作用的配置。 (或者更好的是,附上一个语法补丁。)我完全希望很多IOS命令仍然缺失,所以不要害羞。

Gelatin可用于将几乎任何内容转换为XML,如果您碰巧创建自己的语法文件(更多说明为here),请发送给我们。我很乐意接受任何反馈。< / p>

答案 1 :(得分:1)

我在12.4(20)T,12.2(33)SRE,12.2(54)SG和更新的时候遇到XML-PI来处理这样的问题。