Python解析Junos路由器配置以在行中显示数据

2024-04-20 04:16:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的Junos路由器配置部分。我试图解析数据以显示下面的结果。我尝试了很多方法,但我遇到的问题是,我似乎无法为每个接口(lo0.2和xe-1/0/2.1210)获得唯一的行。如果您能帮助我了解实现预期产出的最佳方式,我将不胜感激。我想做的是,解析这些路由器配置,在excel中以行的形式显示关键数据,这将包括接口配置项

我曾尝试在配置中循环并寻找匹配的行,但我永远无法同时获得这两个接口。只是需要一些关于如何做到这一点的想法

for line in config:
    if line.startswith('set routing-instances'):
        if 'options router-id' in line:
            self.router_id = line.split()[5]
        elif 'interface' in line:
            self.interface = line.split()[5]
        elif 'vrf-import' in line:
            self.vrf_import_policy = line.split()[4]
        elif 'vrf-export' in line:
            self.vrf_export_policy = line.split()[4]

    set routing-instances redwood-ca routing-options router-id 10.10.10.1
    set routing-instances redwood-ca routing-options autonomous-system 620
    set routing-instances redwood-ca routing-options autonomous-system independent-domain no-attrset
    set routing-instances redwood-ca protocols bgp path-selection always-compare-med
    set routing-instances redwood-ca protocols bgp path-selection external-router-id
    set routing-instances redwood-ca protocols bgp family inet unicast
    set routing-instances redwood-ca protocols bgp hold-time 30
    set routing-instances redwood-ca protocols bgp log-updown
    set routing-instances redwood-ca instance-type vrf
    set routing-instances redwood-ca interface lo0.2
    set routing-instances redwood-ca interface xe-1/0/2.1210
    set routing-instances redwood-ca route-distinguisher 10.10.10.1:100
    set routing-instances redwood-ca vrf-import redwood-ca-vrf-import
    set routing-instances redwood-ca vrf-export redwood-ca-vrf-export
    set routing-instances redwood-ca vrf-table-label
    
 
    Desired Output
    vrf         router-id       interface           vrf-import              vrf-export
    redwood-ca  10.10.10.1      lo0.2               redwood-ca-vrf-import   redwood-ca-vrf-export
    redwood-ca  10.10.10.1      xe-1/0/2.1210       redwood-ca-vrf-import   redwood-ca-vrf-export

我感谢你能提供的任何帮助。是否有将垂直类型数据转换为水平行的标准/最佳实践方法

提前谢谢大家的帮助

迈克


Tags: instancesinimportidlineexportroutinginterface
1条回答
网友
1楼 · 发布于 2024-04-20 04:16:06

您是否可以将接口设置为列表,并在每次找到时附加匹配项

**interface = list()**
for line in config:
    if line.startswith('set routing-instances'):
        if 'options router-id' in line:
            router_id = line.split()[5]
        elif 'interface' in line:
            **interface.append(line.split()[4])**
        elif 'vrf-import' in line:
            vrf_import_policy = line.split()[4]
        elif 'vrf-export' in line:
            vrf_export_policy = line.split()[4]

print interface

输出- ['lo0.2','xe-1/0/2.1210']

相关问题 更多 >