Python ciscoconfparse 查找关闭接口和整个接口块?

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

以下示例将使用此配置,该配置取自 http://pennington.net/tutorial/ciscoconfparse/ccp_tutorial.html#slide3

! filename:exampleswitch.conf
!
hostname ExampleSwitch
!
interface GigabitEthernet 1/1
 switchport mode trunk
 shutdown
!
interface GigabitEthernet 1/2
 switchport mode access
 switchport access vlan 20
 switchport nonegotiate
 no cdp enable
!
interface GigabitEthernet 1/3
 no switchport
 ip address 192.0.2.1 255.255.255.0

这也是取自 http://pennington.net/tutorial/ciscoconfparse/ccp_tutorial.html#slide7

的代码
from ciscoconfparse import CiscoConfParse

parse = CiscoConfParse('exampleswitch.conf', syntax='ios')

for intf_obj in parse.find_objects_w_child('^interface', '^\s+shutdown'):
    print("Shutdown: " + intf_obj.text)

输出

$ python script.py 
Shutdown: interface GigabitEthernet 1/1
$ 

代码运行良好。但是,除了显示

Shutdown: interface GigabitEthernet 1/1
之外,是否可以在输出中显示整个
interface GigabitEthernet 1/1
块:

interface GigabitEthernet 1/1
 switchport mode trunk
 shutdown
python cisco cisco-ios ciscoconfparse
1个回答
2
投票

我猜你正在寻找的是find_blocks

find_blocks(linespec,exactmatch=False,ignore_ws=False)。 查找与 linespec 匹配的所有兄弟姐妹,然后找到这些兄弟姐妹的所有父母 兄弟姐妹。返回按行号排序的配置行列表, 最低的优先

查看 Ciscoconfparse API 文档,其中包含示例。

所以我想它看起来像这样:

from ciscoconfparse import CiscoConfParse

parse = CiscoConfParse('exampleswitch.conf', syntax='ios')

for intf_obj in parse.find_blocks(r'^\sshutdown'):
      print(intf_obj)
© www.soinside.com 2019 - 2024. All rights reserved.