Могу ли я использовать два объекта 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 сконфигурировано.

Другие вопросы по тегам