Cisco 没有为 IOS 配置提供架构。但是,您可能有两种选择:
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,如果您碰巧创建了自己的语法文件(更多说明在此处),请发送它们。我很乐意接受任何反馈。