首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PYEZ -显示集\匹配命令

PYEZ -显示集\匹配命令
EN

Stack Overflow用户
提问于 2017-05-18 00:16:40
回答 1查看 1.5K关注 0票数 1

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

显示配置:显示配置,显示集,显示集,显示,显示集,显示集,匹配服务-

我的目的是获取match RI命令的set命令行,用delete替换set并加载到设备。

请帮帮忙。

尝试:log.debug(“收集路由器配置”)

代码语言:javascript
复制
    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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-18 16:50:20

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

在您的例子中,我建议您使用dev.rpc.get_config()检索配置。您可以指定filter_xml参数来检索配置的子集。config

例如,要以set格式检索所有[edit routing-instances]配置,您可以这样做:

代码语言:javascript
复制
>>> 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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44036667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档