“Net :: Netconf :: Manager”将RPC请求中的下划线转换为连字符

问题描述:

我正在使用 Net::Netconf::Manager 来使用RPC命令查询设备。在RPC命令中,我应该发送一个参数列表,所以我在一个哈希中添加了查询参数。其中一种说法是verbosity_level“Net :: Netconf :: Manager”将RPC请求中的下划线转换为连字符

请注意我在这个参数中使用了下划线_。当我打印散列时,它仍然是下划线。

但是,当我打印发送到设备的XML RPC请求,参数更改为verbosity-level

<verbosity-level>abcd</verbosity-level> 

,而不是

<verbosity_level>abcd</verbosity_level> 

所以设备说,它不知道这样的论据。

为什么下划线被转换为连字符?

这样做的代码是在线的492 Net/Netconf/Device.pm。这是一个简单的替换,而且也没有注释,以解释为什么它的存在

所有我能想到的做的是注释掉该行

($tag = $field) =~ s/_/-/g 

$tag = $field 

更换其应该为你做点事情。与此同时,您可以发送电子邮件至瞻博网络Perl团队[email protected]并询问。如果你这样做,请让我们知道回应

+1

可能是Junos的一个工件,它没有在其XML标签中加下划线*,并且在客户化RPC请求时添加了一些糖。 [一些例子显示它在他们的方法上完成](https://www.juniper.net/documentation/en_US/junos13.2/topics/task/program/netconf-perl-client-application-submitting-requests.html)。我猜想直到最近还没有很多其他供应商在使用netconf。 – salparadise

+0

感谢鲍罗廷。我在github的netconf-perl API中提出了一个问题。似乎他们只是在RPC请求中使用连字符而不是下划线来进行标准化。这个问题可以在以下链接中查到https://github.com/Juniper/netconf-perl/issues/35 –