如何解决如何使用ncclient模块使用Netconf解析和提取信息?
我正在研究支持Netconf的Cisco 9300交换机(IOS-XE)。我正在尝试使用ncclient解析并提取接口Gigabitethernet 1/0/12的描述和VLAN信息,以下是Gi1 / 0/12的原始配置
interface GigabitEthernet1/0/12
description *** UNIT-114 DATA & VOICE Port ***
switchport access vlan 740
switchport mode access
switchport voice vlan 737
spanning-tree portfast
end
下面是使用etree.tostring()方法将接口Gi1 / 0/12的XML对象转换为字符串格式。
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
<native xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-native">
<interface>
<GigabitEthernet>
<name xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">1/0/12</name>
<description>*** UNIT-114 DATA & VOICE Port ***</description>
<switchport>
<access xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-switch">
<vlan>
<vlan>740</vlan>
</vlan>
</access>
<mode xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-switch">
<access/>
</mode>
<voice xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-switch">
<vlan>
<vlan>737</vlan>
</vlan>
</voice>
</switchport>
<spanning-tree xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-spanning-tree">
<portfast/>
</spanning-tree>
</GigabitEthernet>
</interface>
</native>
</data>
我设法解析并提取了在Python脚本下运行的该接口的描述内容:
from ncclient import manager
from lxml import etree
m = manager.connect(host='x.x.x.x',port=830,username='xxx',password='xxx',hostkey_verify=False,device_params={'name':'iosxe'},timeout=300)
FILTER = """
<filter>
<native xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-native">
<interface>
<GigabitEthernet>
<name>1/0/12</name>
</GigabitEthernet>
</interface>
</native>
</filter>"""
interface = m.get_config('running',FILTER)
description = interface.data.find('.//{http://cisco.com/ns/yang/Cisco-IOS-XE-native}description')
print (description.text)
这返回了我想要的输出,即*** UNIT-114 DATA&VOICE Port ***
但是,当我尝试使用相同的find()方法解析VLAN编号(740和737)时,它不起作用,我得到的是 AttributeError:'nonetype'对象没有属性'text'。 (运行以下脚本后)。
from ncclient import manager
from lxml import etree
m = manager.connect(host='x.x.x.x',FILTER)
vlan = interface.data.find('.//{http://cisco.com/ns/yang/Cisco-IOS-XE-native}vlan')
print (vlan.text)
请告知我如何使用ncclient从其中解析并提取两个VLAN ID 740和737。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。