在解析具有相似模板的数据时使用 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 在每个服务下配置接口。但是,我想知道是否有一种方法可以使用 start 和 end 多行解析数据。
例如:
{{_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/
我正在尝试解析位于同一文件中的以下示例配置。我有两个不同的服务,其中配置了接口。我需要从每个服务中获取每个接口。但是,由于以下服务的接口具有相似的模板,当尝试解析 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 在每个服务下配置接口。但是,我想知道是否有一种方法可以使用 start 和 end 多行解析数据。
例如:
{{_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/