2017-10-21 4 views
0

私は Net::Netconf::Manager を使用してRPCコマンドでデバイスに問い合わせます。 RPCコマンドでは、引数のリストを送信する必要があります。そのため、クエリ引数をハッシュに追加します。そのような議論の1つはverbosity_level"Net :: Netconf :: Manager"は、RPC要求のアンダースコアをハイフンに変換します

です。この引数にはアンダースコア_が使用されています。私がハッシュを印刷するとき、それはまだアンダースコアです。

しかし、私は、デバイスに送信されるXML RPCリクエストを印刷するとき、引数がverbosity-level

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

代わりの

<verbosity_level>abcd</verbosity_level> 

に変更されるので、デバイスは、そのようなを知らないと言います引数。

アンダースコアがハイフンに変換されるのはなぜですか?

答えて

2

これを行うコードは、 Net/Netconf/Device.pmの492行目です。これは単純な置換だし、それが

だ理由を説明するためにはコメントはありません、私はどうするの考えることができるすべては、その行

($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

ありがとうBorodin。私はgithubのnetconf-perl APIで問題を提起しました。アンダースコアではなく、RPC要求でハイフンを使用するように標準化しているようです。この問題は、次のリンクで追跡できます。https://github.com/Juniper/netconf-perl/issues/35 –