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