如何通过pyEZ获取Junos默认组中的默认应用配置?
嗨Prabir,我正好碰到过类似的问题,来给你说说怎么解决!
你遇到的问题是因为get_config()默认不会返回Junos的系统默认配置组(junos-defaults),这是Junos RPC的默认行为——它只返回你手动配置的部分,不会包含系统自带的默认配置。但我们可以通过几个方法让pyEZ获取到这些默认应用的信息:
方法1:获取包含默认组的完整配置
调用get_config()时加上options={'inherit': 'inherit'}参数,这个参数会让Junos返回包含继承配置(包括junos-defaults)的完整配置:
from jnpr.junos import Device from lxml import etree dev = Device(host='xxxx', user='demo', password='demo123', gather_facts=False) dev.open() # 启用inherit选项以包含默认配置组 cnf = dev.rpc.get_config(options={'inherit': 'inherit'}) # 格式化输出XML,方便阅读 print(etree.tostring(cnf, pretty_print=True).decode()) dev.close()
方法2:精准过滤只获取默认组的应用配置
如果不需要完整配置,只想拿到junos-defaults下的applications部分,可以用XML过滤来缩小范围,这样更高效:
from jnpr.junos import Device from lxml import etree dev = Device(host='xxxx', user='demo', password='demo123', gather_facts=False) dev.open() # 定义过滤XML,只获取junos-defaults组下的applications filter_xml = """ <groups> <name>junos-defaults</name> <applications/> </groups> """ cnf = dev.rpc.get_config(filter_xml=filter_xml) print(etree.tostring(cnf, pretty_print=True).decode()) dev.close()
方法3:直接执行CLI命令获取Set格式输出
如果你更习惯手动执行的set格式输出,也可以用pyEZ的cli()方法直接运行对应的命令:
from jnpr.junos import Device dev = Device(host='xxxx', user='demo', password='demo123', gather_facts=False) dev.open() # 执行你手动用的CLI命令,输出和设备上看到的一致 output = dev.cli('show configuration groups junos-defaults applications | display set') print(output) dev.close()
这三种方法都能帮你拿到junos-defaults里的默认应用信息,你可以根据自己的需求选最合适的一种~
内容的提问来源于stack exchange,提问作者Prabir
相关产品推荐
相关产品推荐

