在解析具有相似模板的数据时使用 ttp 时遇到问题

having a problem using ttp while parsing a data which has similar template

我正在尝试解析位于同一文件中的以下示例配置。我有两个不同的服务,其中配置了接口。我需要从每个服务中获取每个接口。但是,由于以下服务的接口具有相似的模板,当尝试解析 vprn 接口时,我也得到了 ies 接口。反之亦然。

      ies 10102 customer 1 create
          interface "Y" create
              description X
              address 192.168.19.134/30
              sap 1/3/7:3500.22 create
              exit
          exit

      vprn 10101 customer 1 create
          interface X create
              description X
              address 192.168.19.130/30
              sap 1/3/7:3500.21 create
              exit
          exit

我确实找到了一种解决方法,可以使用 ttp 在每个服务下配置接口。但是,我想知道是否有一种方法可以使用 startend 多行解析数据。

例如:

  {{_init_}}ies {{id}} customer {{id2}} create
      interface {{interface_name}} create
          address {{address|PREFIX}}
          sap {{sap_port}} create
          exit{{_end_}}
      exit

也许这样的事情会奏效

日期:

  ies 10102 customer 1 create
      interface "Y" create
          description X
          address 192.168.19.134/30
          sap 1/3/7:3500.22 create
          exit
      exit

  vprn 10101 customer 1 create
      interface X create
          description X
          address 192.168.19.130/30
          sap 1/3/7:3500.21 create
          exit
      interface Y create
          description X
          address 192.168.19.130/30
          sap 1/3/7:3500.21 create
          exit
      exit

模板:

 <group name="{{ service_type }}">
      {{ service_type }} {{id}} customer {{id2}} create
      <group name="interfaces*">
          interface {{interface_name}} create
              address {{address}}
              sap {{sap_port}} create
          exit {{_end_}}
       </group>
       exit {{_end_}}
</group>

结果:

[
    {
        "ies": {
            "id": "10102",
            "id2": "1",
            "interfaces": [
                {
                    "address": "192.168.19.134/30",
                    "interface_name": "\"Y\"",
                    "sap_port": "1/3/7:3500.22"
                }
            ]
        },
        "vprn": {
            "id": "10101",
            "id2": "1",
            "interfaces": [
                {
                    "address": "192.168.19.130/30",
                    "interface_name": "X",
                    "sap_port": "1/3/7:3500.21"
                },
                {
                    "address": "192.168.19.130/30",
                    "interface_name": "Y",
                    "sap_port": "1/3/7:3500.21"
                }
            ]
        }
    }
]

您可以在此处快速测试上述模板 - http://textfsm.nornir.tech/