Разбор через Cisco Config - PullRequest
       7

Разбор через Cisco Config

0 голосов
/ 29 августа 2018

Я пытался написать скрипт на Python, чтобы пройти через некоторые конфигурации Cisco.

Пока что у меня есть скрипт для работы с одним конфигом, и он анализирует интерфейсы, которые не имеют 802.1x authentication* интерфейсных команд.

У меня проблемы с удалением interface Tengig и interface vlan* из списка. Каков наилучший способ сделать это? Я попробовал следующие способы без удачи. Может я просто неправильно их использую?

list.remove(Interface Vlan*) 

for item in list(NoDot1x):
  somelist.remove("Interface Vlan*")

Код:

    #Int Modules
    from ciscoconfparse import CiscoConfParse

    #Define what to Parse
    parse = CiscoConfParse("/home/jbowers/Configs/SwithConfig")

    #Define all Interfaces without Authentication * commands
    all_intfs = parse.find_objects(r"^interf")
    NoDot1x = list()
    NoDot1x = parse.find_objects_wo_child(r'^interface', r'authentication')

   #Display Results
   for obj in NoDot1x:
       print obj.text

   #Remove Uplinks
   for item in list(NoDot1x):
     somelist.remove("Interface Vlan*")

Здесь вывод для #Display Results.

interface Port-channel1
interface FastEthernet1
interface GigabitEthernet1/1
interface TenGigabitEthernet5/1
interface TenGigabitEthernet5/2
interface TenGigabitEthernet5/3
interface TenGigabitEthernet5/4
interface TenGigabitEthernet5/5
interface TenGigabitEthernet5/6
interface TenGigabitEthernet5/7
interface TenGigabitEthernet5/8
interface TenGigabitEthernet6/1
interface TenGigabitEthernet6/2
interface TenGigabitEthernet6/3
interface TenGigabitEthernet6/4
interface TenGigabitEthernet6/5
interface TenGigabitEthernet6/6
interface TenGigabitEthernet6/7
interface TenGigabitEthernet6/8
interface GigabitEthernet7/23
interface GigabitEthernet8/17
interface GigabitEthernet9/2
interface Vlan1

1 Ответ

0 голосов
/ 29 августа 2018

Функция удаления, предлагаемая объектом списка в Python, попытается найти точное совпадение с введенной строкой и удалить, если найдена, если нет, то это приведет к ошибке.

#Remove Uplinks
for item in list(NoDot1x):
 somelist.remove("Interface Vlan*")

Выше не будет использоваться подстановочный знак "*". Я думаю, вы хотите что-то еще, как:

for item in list(NoDot1x):
 if "Interface Vlan" in item:
  somelist.remove(item)

Если вам нужно больше сложности, посмотрите на повторный импорт.

...