我如何编辑它以检索接口统计信息?需要使用哪些标签?我怎么知道?
您的示例使用<get-config>
标准操作,它只检索配置,而不是操作状态。如果您希望检索后者,您需要使用<get/>
,它同时检索配置和状态数据。
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="${TIMESTAMP}">
<get>
<filter>
<interface-configurations xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg"/>
</filter>
</get>
</rpc>
这个没有<source>
参数,因为它总是检索运行配置和运行状态。熟悉 NETCONF 的最简单方法是阅读其规范。
我将包含命名空间的行更改为诸如“http://abcd/check”之类的随机行,但它失败了。为什么?
如果“失败”意味着您收到了<rpc-error>
,那将是非标准行为。您应该得到一个空<data/>
响应,因为没有与您的过滤器匹配的节点。过滤器需要完全匹配。
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="163">
<data/>
</rpc-reply>
NETCONF 数据存储严重依赖命名空间,因为它解决了最常见的命名问题。例如,如果您有两个模块并且它们包含名为“my-config”的顶级元素,那么您不会有问题,因为它们由模块命名空间唯一标识:{uri:a}my-config
和{uri:b}my-config
.
在您的示例中,您要求{http://a.b.c.d/check}interface-configurations
,它根本不存在。部分匹配(本地名称)无关紧要,因为您从特定名称空间interface-configuration
请求了特定名称。interface-configuration
命名空间(有点)类似于住宅地址。可能存在许多 John Smiths,但您可以通过说明其完整地址来解决特定的一个。如果您要求您当地的邮局仅将包裹寄给“约翰·史密斯”这个名字,而没有地址,邮局将不知道您指的是哪一个。
注意:如果您的意思是您更改了urn:ietf:params:xml:ns:netconf:base:1.0
线路,那么问题是一样的。您试图执行一些服务器未知的操作。但是,这种情况会因错误响应而失败。