是这样,楼主经常用 jinja2 去根据模板生成网络设备的配置文件,再由其他人员将配置刷到设备上,这样做批量化上线时很方便。 然而对于在线的设备,如何快速校验配置的正确性一直没有好的方法。这过程类似于一个模板的逆向过程,不知道有没有人做过类似的东西?
1
ansheng 2017-01-08 20:18:04 +08:00
yaml 可以吗?
|
2
saber000 2017-01-08 20:21:01 +08:00
pyparsing?
|
3
loading 2017-01-08 20:29:26 +08:00 via Android
正则
|
4
Delbert 2017-01-08 20:36:18 +08:00 via Android
你的配置文件是什么格式的啊, python 一般都有轮子。
|
5
Gothack OP @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 ! ``` |
8
cortexm3 2017-01-08 20:47:13 +08:00
搞个正则表达式就够了吧。
|
9
rogerchen 2017-01-08 21:10:22 +08:00 via iPad
视配置复杂程度
拿正则勉强撸一套 手写 parser 手写 ebnf ,用 antlr 生成 python 的 parser |
10
forrestchang 2017-01-08 22:15:49 +08:00
递归下降解析器
|
11
qdcanyun 2017-01-08 22:40:15 +08:00
|
12
pc10201 2017-01-08 23:55:05 +08:00
ansible 现在都可以直接管理 cisco 设备~
|
13
xiamx 2017-01-09 00:05:42 +08:00
看一看配置文件的格式是正则语言还是上下文无关语言。如果是正则语言,基本上可以用 regex 匹配。如果是上下文无关语言,就只能自写 parser 了
|