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