Skip to end of metadata
Go to start of metadata

c "Божьей"  помощью, вот что получилось. Я очень очень буду рада комментариям, но убедительно прошу не сильно пинать ногами, т.к. мой опыт программирования равен 1 неделе, опыт программирования на python и того меньше.  Первая попытка, т.к. цель не достигнута код буду очень сильно модифицировать и часто. 

 

1
intname = "fastethernet0/45"
aclname = "BLOCK-" + intname
blockstring = "deny any any"
aclseek = False
import re
f = open('/srv/noc/repo/config/cisco1845conf', 'r')
m = re.search(r'(?P<int>interface (?P<intname>' + intname + ')(.+?)\!)', f.read(), re.IGNORECASE | re.DOTALL)
if m:
    interfaceconf = m.group('int')
    intname = m.group('intname')
    m = re.search(r'.+access-group (?P<aclname>.+) .+', interfaceconf)
    if m:
        aclname = m.group('aclname')
        aclseek = True
cmd = ""
acl = []
acl.append(blockstring)
if aclseek:
    f.seek(0)
    while True:
        line = f.readline()
        if not line: break
        m = re.search(r'access-list ' + aclname + ' (?P<acl>.+)', line)
        if m:
            cmd = "interface " + intname + "\n no access-group " + aclname + " in\n!\n"
            cmd = cmd + "no access-list " + aclname + "\n"
            acl.append(m.group('acl'))
f.close()
for line in acl:
    cmd = cmd + "access-list " + aclname + " " + line + "\n"
cmd = cmd + "!\ninterface " + intname + "\n" \
                                        " access-group " + aclname + " in\n"
print(cmd)
  • No labels

5 Comments

  1. Unknown User (tsergey)

    а что лежит в /home/linda/Documents/cat.conf'?

  2. Unknown User (d8e9c0) AUTHOR

    конфиг моего каталиста. все вот так через 1 место, потому что я пока не знаю как толком все это выцепить из нок. поэтому у меня и появляются такие странные переменные) 

    1. Unknown User (mikevlz)

      конфиг железки из репозитария выдергивается такой конфтрукцией:

      config =sw.config.read()

      sw - это экземпляр объекта, чей конфиг хочется получить.

      Для работы надо

      from noc.sa.models import *

      Насчет плюсов и прочего - есть команды +=, есть форматирование строк. Но можно и так, главное - чтоб работало. А перфекционисты пусть на соплях повесятся.

      1. Unknown User (d8e9c0) AUTHOR

        О! классно! Это то, что нужно (smile) Спасибо огромное! 

  3. Unknown User (d8e9c0), посмотри на функцю join в питоне. избавит от кучи плюсиков в коде