我可以在单个Cisco IOS配置文件中使用两个ciscoconfparse对象来获取特定接口

时间:2019-04-22 09:01:32

标签: python-3.x networking ciscoconfparse

  

尝试使用两个conf对象 find_objects_w_child &   在单个文件中 find_objects_wo_child

我需要从Cisco配置文件中找出配置了特定QoS“服务策略”命令的“接口”。

同时不应成为任何以太通道的一部分。

  • 使用对象“ find_objects_w_child”,我可以获得配置了命令“ service-policy”的所有“接口”对象,并且
  • 使用对象“ find_objects_wo_child”来获取所有不具有命令“ channel-group”的“接口”对象。

是否甚至可以在同一个配置文件中使用这两个对象?

1 个答案:

答案 0 :(得分:0)

CiscoConfParse对象不提供一种方法,该方法允许您查找具有特定子项但没有其他特定子项的对象。但是,我们可以利用列表推导通过IOSCfgLine对象的re_search_children()方法来完成相同的任务,如下所示:

from ciscoconfparse import CiscoConfParse

parse = CiscoConfParse("ios_cfg.txt")
phys_intfs_w_qos = [obj for obj in parse.find_objects_wo_child(r"^interface", "channel-group") if obj.re_search_children(r"service-policy")]

因为正则表达式对象是truthy,所以上面的列表理解将仅返回IOSCfgLine对象,这些对象表示未配置channel-group但配置了service-policy的接口。