PYEZ - 显示设置|匹配命令

时间:2017-05-18 00:16:40

标签: python pyez

我一直在尝试通过以下程序运行以下命令,但是他们正在获取整个配置文件,而不是match命令的结果。 PYEZ不支持匹配功能吗?

显示配置|显示集|匹配RI- 显示配置|显示集|匹配POOL- 显示配置|显示集|匹配服务 -

我的目的是获取匹配RI命令的set命令行,将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 个答案:

答案 0 :(得分:2)

如警告所示,dev.cli()方法仅用于调试目的。它不支持任何| match修饰符。这是因为它实际上并没有在CLI提示符下执行命令,而是通过NETCONF会话发送<command> RPC,并且存在<command> RPC不支持{Jun}限制| match RPC dev.rpc.get_config() }修饰符。

在您的情况下,我建议您使用filter_xml检索配置。您可以指定[edit routing-instances]参数以检索配置的子集。 http://junos-pyez.readthedocs.io/en/2.1.2/jnpr.junos.html#jnpr.junos.rpcmeta._RpcMetaExec.get_config

例如,要以集合格式检索所有>>> 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

您只能使用canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> { return this.af.authState.map(auth => { if (isNullOrUndefined(auth)) { this.router.navigate(['/login']); return false; } else { return true; } }); } 参数指定配置层次结构。您无法匹配特定的文本模式。但是,您始终可以下载配置层次结构,然后使用常规Python字符串方法对响应执行字符串匹配。

- 斯泰西