python-3.x 如何通过ncclient使用Netconf获取接口状态

z9zf31ra  于 2023-10-21  发布在  Python
关注(0)|答案(2)|浏览(163)

我正在使用ncclient从路由器(IOS-XR)获取信息,但无法获取状态。我的意思是,如果我从路由器运行命令“显示接口描述”我可以看到接口,状态,协议和描述.我想用ncclient对Netconf做同样的事情。有人知道怎么做吗?我尝试过get_config,我可以得到描述,但不能得到状态(up,down,admin-down)和协议(up,down,admin-down)
谢谢

von4xj4u

von4xj4u1#

Netconf协议区分配置数据和操作数据。为了检索操作数据,例如你必须使用get操作而不是get-config操作的接口状态。
根据RFC 6241

get-config用于“删除指定配置文件的全部或部分”。(仅限配置数据)
get用于“获取运行配置和设备状态信息”。(config + oper data)

节点存储配置数据还是操作数据取决于它在相应的YANG模块中的定义方式。节点可以是config falseconfig true(默认)

kcrjzv8t

kcrjzv8t2#

您可以尝试此操作以获取接口详细信息。

from ncclient import manager
from pprint import pprint
import xmltodict
import xml.dom.minidom

router = {
   'ip': '172.30.1.100',
   'port': '830',
   'username': 'test123',
   'password': 'test123'
}

m = manager.connect(host=router['ip'], port=router['port'], username=router['username'],
                    password=router['password'],device_params={'name':'iosxr'} ,hostkey_verify=False)

netconf_filter = """
<filter>
    <interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"/>
</filter>

"""
running_config = m.get(netconf_filter)

print(running_config)
running_config_xml = xmltodict.parse(running_config.xml)["rpc-reply"]["data"]
print(xml.dom.minidom.parseString(str(running_config)).toprettyxml())

相关问题