我需要通过中间的一些命令获得块的完整配置。 在下面的示例中,我得到了一个不完整的块,其中缺少更多缩进的子项“ip 10.2.2.1”。
from ciscoconfparse import CiscoConfParse
from pprint import pprint
config = """
hostname switch
interface Vlan2
description vlan2
ip address 10.2.2.3/24
hsrp 2
ip 10.2.2.1
interface Vlan3
description vlan3
ip address 10.3.3.3/24
hsrp 3
ip 10.3.3.1
""".splitlines()
ccp = CiscoConfParse(config=config)
blocks = ccp.find_blocks("10.2.2.3/24")
print(blocks) # ['interface Vlan2', ' description vlan2', ' ip address 10.2.2.3/24', ' hsrp 2']
帮我找到优雅的方式来获得下一个输出(使用'ip 10.2.2.1')
['interface Vlan2', ' description vlan2', ' ip address 10.2.2.3/24', ' hsrp 2', 'ip 10.2.2.1']
for block in ccp.find_objects_w_child("interface", "ip address 10.2.2.3/24"): # find interfaces with this ip
# Print block line and all children
print([c.text for c in (block, *block.all_children)])
似乎可以解决问题。 我认为可能有一种更简单的方法来打印出一个块及其子块,但我对
ciscoconfparse
API 并不熟悉。