1

是否有:

一个免费提供的程序,可以将 Cisco 的“show conf”的输出转换为一些合理的 XML,如下所示(可能不是很合理)块形式:

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

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

  </authentication>
</aaa>

...或者,如果不是,我可以寻求实现的 XML 模式?如果没有对 IOS 语法有深入的了解,那么构建模式是很棘手的。

4

2 回答 2

2

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

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

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

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

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

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

[编辑] 上面的答案现在基本上已经过时了:我已经写了Gelatin,它可以让你将 IOS 和 IOS XR 配置转换为 XML、JSON 或 YAML——无论你喜欢哪个。这本质上是前面提到的丑陋黑客的替代品,有以下区别:

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

一个简短的操作方法:

  • 下载并安装明胶:

    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
    

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

Gelatin 可用于将几乎所有内容转换为 XML,如果您碰巧创建了自己的语法文件(更多说明在此处),请发送它们。我很乐意接受任何反馈。

于 2009-12-13T19:55:58.067 回答
1

我在 12.4(20)T、12.2(33)SRE、12.2(54)SG 和更新版本上遇到过XML-PI,它处理了这样的问题。

于 2010-12-29T10:57:54.190 回答