python 中有没有能解析配置文件的库

2017-01-08 20:12:19 +08:00
 Gothack

是这样,楼主经常用 jinja2 去根据模板生成网络设备的配置文件,再由其他人员将配置刷到设备上,这样做批量化上线时很方便。 然而对于在线的设备,如何快速校验配置的正确性一直没有好的方法。这过程类似于一个模板的逆向过程,不知道有没有人做过类似的东西?

2733 次点击
所在节点    Python
14 条回复
ansheng
2017-01-08 20:18:04 +08:00
yaml 可以吗?
saber000
2017-01-08 20:21:01 +08:00
pyparsing?
loading
2017-01-08 20:29:26 +08:00
正则
Delbert
2017-01-08 20:36:18 +08:00
你的配置文件是什么格式的啊, python 一般都有轮子。
Gothack
2017-01-08 20:41:31 +08:00
@ansheng @Delbert
cisco 之类的设备,不是通用的配置文件类型,网上找了段,类似这种
```interface Ethernet0
nameif test
security-level 10
ip address 10.10.88.50 255.255.255.254
!
interface Ethernet1
nameif inside
security-level 100
ip address 10.86.194.176 255.255.254.0
!
interface Ethernet2
shutdown
no nameif
security-level 0
no ip address
!
interface Ethernet3
shutdown
no nameif
security-level 0
no ip address
!
```
Gothack
2017-01-08 20:43:38 +08:00
@loading 正则是个出路,不过似乎造这个轮子成本太高,主要是由于配置文件量大以及不同品牌设备差异大
Gothack
2017-01-08 20:46:22 +08:00
@saber000 没用过这个,我看下,谢谢
cortexm3
2017-01-08 20:47:13 +08:00
搞个正则表达式就够了吧。
rogerchen
2017-01-08 21:10:22 +08:00
视配置复杂程度

拿正则勉强撸一套
手写 parser
手写 ebnf ,用 antlr 生成 python 的 parser
forrestchang
2017-01-08 22:15:49 +08:00
递归下降解析器
qdcanyun
2017-01-08 22:40:15 +08:00
pc10201
2017-01-08 23:55:05 +08:00
ansible 现在都可以直接管理 cisco 设备~
xiamx
2017-01-09 00:05:42 +08:00
看一看配置文件的格式是正则语言还是上下文无关语言。如果是正则语言,基本上可以用 regex 匹配。如果是上下文无关语言,就只能自写 parser 了
Gothack
2017-01-09 19:31:11 +08:00
@qdcanyun
多谢推荐。这个用过些,然而设备厂商属性太强,其他设备不方便,所以倾向于找个通用性的
@pc10201
同上。。。
@cortexm3
@rogerchen
正则的话复杂度略高...antlr 的话之前没用过,回头研究下,谢谢
@forrestchang
解析器的话会不会太高端了些,怕是我这个小运维搞不定啊。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/333120

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX