1

尝试在单个文件中使用两个 conf 对象find_objects_w_childfind_objects_wo_child 。

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

同时不应成为任何 Etherchannel 的一部分。

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

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

4

1 回答 1

2

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")]

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

于 2019-04-27T02:37:06.407 回答