Python CiscoConfParse。如何在中间通过命令获得完整块?

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

我需要通过中间的一些命令获得块的完整配置。 在下面的示例中,我得到了一个不完整的块,其中缺少更多缩进的子项“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']
python cisco ciscoconfparse
1个回答
0
投票
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 并不熟悉。

© www.soinside.com 2019 - 2024. All rights reserved.