PYEZ - Дисплей установлен | Команда соответствия

Я пытался запустить команды ниже через программу ниже, но они получают весь файл конфигурации, а не результат команды соответствия. Функция соответствия не поддерживается через PYEZ?

показать конфигурацию | набор дисплея | соответствовать RI- показать конфигурацию | набор дисплея | матч POOL- показать конфигурацию | набор дисплея | матч СЕРВИС-

Моя цель состояла в том, чтобы получить установленные командные строки команды match RI, заменить set на delete и загрузить на устройство.

Пожалуйста помоги.

попробуйте: log.debug("сбор конфигурации маршрутизатора")

    now = datetime.datetime.now()
    datets = str(now.year) + str(now.month) + str(now.day) + "_" + str(now.hour) + str(now.minute) + str(now.second)
    log.debug("timestamp set to " + str(datets))

    if (format == "cnf"):
        cnf = dev.cli("show configuration", warning=False)
        FileName = rtName + "." + datets + ".cnf"
        log.debug("The configuration will be stored in filename as %s", FileName)

        # saving the configuration into a CNF file
        f = open(FileName, 'w+')
        f.write(cnf)
        f.close
        return FileName

    elif (format == "set"):
        cnf = dev.cli("show configuration | display set | match pool-", warning=False)
        FileName = rtName + "." + datets + ".txt"
        log.debug("The configuration will be stored in filename as %s", FileName)
        # saving the configuration into a Text file
        f = open(FileName, 'w+')
        f.write(cnf)
        f.close
        return FileName

    else: # defaults to XML
        cnf = dev.rpc.get_config()
        FileName = rtName + "." + datets + ".xml"
        log.warn("The configuration will be stored in filename as %s", FileName)

        # saving the configuration into a XML file
        f = open(FileName, 'w+')
        f.write(etree.tostring(cnf))
        f.close
        return FileName

except Exception as e:
    log.error("could not collect the router configuration via RPC")
    log.error(e.message)
    return None


# if the execution gets here, the return will be None
return FileName

1 ответ

Решение

Как говорится в предупреждении, dev.cli() Метод только для целей отладки. Не поддерживает | match модификаторы. Это потому, что на самом деле она не выполняет команду в командной строке CLI, а отправляет <command> RPC через сеанс NETCONF, и есть ограничение Junos, что <command> RPC не поддерживает | match модификаторы.

В вашем случае я предлагаю вам получить конфигурацию, используя dev.rpc.get_config(), Вы можете указать filter_xml аргумент для получения подмножества конфигурации. http://junos-pyez.readthedocs.io/en/2.1.2/jnpr.junos.html

Например, чтобы получить все [edit routing-instances] Конфигурация в заданном формате вы можете сделать:

>>> rsp = dev.rpc.get_config(filter_xml='<routing-instances/>', options={'format':'set'})
>>> print rsp.text

set routing-instances bar instance-type virtual-router
set routing-instances foo instance-type virtual-router

Вы можете указать только иерархию конфигурации, используя filter_xml аргумент. Вы не можете соответствовать конкретному текстовому шаблону. Однако вы всегда можете загрузить иерархию конфигурации и затем выполнить сопоставление строк в ответе, используя обычные строковые методы Python.

--Stacy

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