Могу ли я использовать два объекта ciscoconfparse в одном файле конфигурации Cisco IOS для получения определенных интерфейсов - PullRequest
1 голос
/ 22 апреля 2019

Попытка использовать два объекта conf find_objects_w_child & find_objects_wo_child в одном файле.

Мне нужно выяснить «интерфейсы» из файла конфигурации Cisco, для которых настроена конкретная команда QoS «service-policy».

В то же время не должно быть частью какого-либо Etherchannel.

  • Используя объект "find_objects_w_child", я могу получить все объекты интерфейса, для которых настроена команда "service-policy", и
  • Использование объекта "find_objects_wo_child" для получения всех объектов интерфейса, которые не имеют команды "channel-group".

Можно ли даже использовать эти 2 объекта в одном файле конфигурации?

1 Ответ

2 голосов
/ 27 апреля 2019

Объекты CiscoConfParse не предлагают метод, который позволяет находить объекты с определенными дочерними объектами, но без других определенных дочерних объектов.Однако мы можем использовать понимание списка для выполнения той же задачи с помощью метода re_search_children() объекта IOSCfgLine, как показано ниже:

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

Поскольку объекты регулярных выражений truey , приведенный выше списокпонимание только вернет объекты IOSCfgLine, представляющие интерфейсы, для которых не настроен channel-group, но настроен service-policy.

...