Textfsm解析诺基亚7750配置

问题描述 投票:0回答:1

我正在尝试解析诺基亚配置。

配置摘录:

        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)
python-textfsm
1个回答
0
投票

我已经找到了使用此模板的解决方案:

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
© www.soinside.com 2019 - 2024. All rights reserved.