0

以下示例将使用此配置,该配置取自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
4

1 回答 1

2

我猜你正在寻找的是find_blocks

find_blocks (linespec, 精确匹配=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)
于 2021-01-08T09:54:47.883 回答