我正在尝试解析诺基亚配置。
配置摘录:
vpls 1521 name "VPLS_521" customer 1 create
sap lag-50:1923.613 split-horizon-group "SPLIT_HORIZON" create
mesh-sdp 17012:1521 create
hash-label signal-capability
control-word
no shutdown
exit
mesh-sdp 17015:1521 create
hash-label signal-capability
control-word
no shutdown
exit
no shutdown
exit
vpls 1523 name "VPLS_523" customer 1 create
sap lag-50:1923.612 split-horizon-group "SPLIT_HORIZON" create
mesh-sdp 17011:1523 create
hash-label signal-capability
control-word
no shutdown
exit
mesh-sdp 17019:1523 create
hash-label signal-capability
control-word
no shutdown
exit
no shutdown
exit
预期结果:
[['1521', '"VPLS_521"', 'lag-50:1923.613', ['17012','17015']], ['1523', '"VPLS_523"', 'lag-50:1923.612', ['17011','17019']]]
Textfsm 模板:
Value VPLS (\d+)
Value VPLS_NAME (\S+)
Value Required SAP_LAG (lag-50:1923\.(6|7)\d+)
Value List SDP (\d+)
Start
^\s+vpls\s${VPLS}\sname\s${VPLS_NAME}\scustomer\s\d+\screate
^\s+sap\s+${SAP_LAG}\s+split-horizon-group\s+"SPLIT_HORIZON"\s+create -> Meshsdp
Meshsdp
^\s+mesh-sdp\s${SDP}:\d+\screate
^\s+hash-label\ssignal-capability -> Continue.Record
^\s+vpls\s${VPLS}\sname\s${VPLS_NAME}\scustomer\s\d+\screate -> Start
使用这个模板我得到了这个结果:
[['1521', '"VPLS_521"', 'lag-50:1923.613', ['17012']], ['1523', '"VPLS_523"', 'lag-50:1923.612', ['17011']]]
你能帮我调整模板以解析所有的 mesh-sdp 吗?
下面是重现我的问题的代码:
import textfsm
import io
config = """
vpls 1521 name "VPLS_521" customer 1 create
sap lag-50:1923.613 split-horizon-group "SPLIT_HORIZON" create
mesh-sdp 17012:1521 create
hash-label signal-capability
control-word
no shutdown
exit
mesh-sdp 17015:1521 create
hash-label signal-capability
control-word
no shutdown
exit
no shutdown
exit
vpls 1523 name "VPLS_523" customer 1 create
sap lag-50:1923.612 split-horizon-group "SPLIT_HORIZON" create
mesh-sdp 17011:1523 create
hash-label signal-capability
control-word
no shutdown
exit
mesh-sdp 17019:1523 create
hash-label signal-capability
control-word
no shutdown
exit
no shutdown
exit
"""
s_template = """Value VPLS (\d+)
Value VPLS_NAME (\S+)
Value Required SAP_LAG (lag-50:1923\.(6|7)\d+)
Value List SDP (\d+)
Start
^\s+vpls\s${VPLS}\sname\s${VPLS_NAME}\scustomer\s\d+\screate
^\s+sap\s+${SAP_LAG}\s+split-horizon-group\s+"SPLIT_HORIZON"\s+create -> Meshsdp
Meshsdp
^\s+mesh-sdp\s${SDP}:\d+\screate
^\s+hash-label\ssignal-capability -> Continue.Record
^\s+vpls\s${VPLS}\sname\s${VPLS_NAME}\scustomer\s\d+\screate -> Start
"""
f_template = io.StringIO(s_template)
template = textfsm.TextFSM(f_template)
l_sap_lag_sdp_nom = template.ParseText(config)
print(l_sap_lag_sdp_nom)
我已经找到了使用此模板的解决方案:
Value VPLS (\d+)
Value VPLS_NAME (\S+)
Value Required SAP_LAG (lag-50:1923\.(6|7)\d+)
Value List SDP (\d+)
Start
^\s+vpls\s${VPLS}\sname\s${VPLS_NAME}\scustomer\s\d+\screate
^\s+sap\s+${SAP_LAG}\s+split-horizon-group\s+"SPLIT_HORIZON"\s+create -> Meshsdp
Meshsdp
^\s+mesh-sdp\s${SDP}:\d+\screate
^\s{12}exit -> Meshsdp
^\s{8}exit -> Continue.Record
^\s+vpls\s${VPLS}\sname\s${VPLS_NAME}\scustomer\s\d+\screate -> Start