Могу ли я использовать два объекта ciscoconfparse в одном файле конфигурации Cisco IOS для получения определенных интерфейсов
Попытка использовать два объекта conf find_objects_w_child & find_objects_wo_child в одном файле.
Мне нужно выяснить "интерфейсы" из файла конфигурации Cisco, для которых настроена конкретная команда QoS "service-policy".
В то же время не должно быть частью какого-либо Etherchannel.
- Используя объект "find_objects_w_child", я могу получить все объекты интерфейса, для которых настроена команда "service-policy", и
- Использование объекта "find_objects_wo_child" для получения всех объектов "interface", которые не имеют команды "channel-group".
Можно ли вообще использовать эти 2 объекта в одном файле конфигурации?
1 ответ
Объекты 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
сконфигурировано.