問題タブ [ietf-netconf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java NETCONF ライブラリ?
NETCONF 経由で構成を管理するための Java ライブラリがあるかどうかは誰にもわかりませんか?
java - YANG データ モデルから XML RPC NETCONF 要求を生成する標準的な方法は何ですか?
NETCONF タグを含むデバイスに送信される XML RPC 要求を生成するためのより良い方法を見つけようとしています。
リクエストがどのように見えるべきかはわかっているので、私がやっていることは、XML-RPC リクエスト XML をプレースホルダーとともにハードコーディングすることです。これらのプレースホルダーは、後で実際の入力に置き換えることができます。
例えば:
この例では、リクエストの送信中に @device_mac が置き換えられます。しかし、リクエスト XML をハードコーディングしていると感じたこともあります。リクエスト XML を生成するより良い方法はありますか?
Netconf データは、YANG/YIN ファイルを使用してモデル化されます。これらのファイルを使用して、少なくとも NETCONF 要求部分を生成する方法はありますか?
python - netconf の接続時に予期しないセッション クローズ エラーがスローされる
ncclient を使用して netconf に接続しています。ただし、Pythonを介して接続しようとするときはいつでも
「ncclient.transport.errors.SessionCloseError: Unexpected session close」エラーがスローされます。私が使用しているコードスニペットを以下に示します
これに関するヘルプは非常に高く評価されています。公開鍵を使用してリモートサーバーに接続できるため、接続でパスワードkを提供しませんでした
また、netconf サーバー ログで、アクセス拒否エラーを確認できます。(ユーザー名とpwdで試しても同じ問題が発生しました)
python - 実行時にパッケージ内のものをオーバーライドする方法は?
[編集:Python2.7.3を実行しています]
私は貿易によるネットワークエンジニアであり、BrocadeのNETCONFの実装で動作させるために、 ncclient(Webサイトのバージョンは古く、これは私が取り組んできたバージョンでした)をハッキングしてきました。Brocade機器で動作させるためにいくつかの調整を行う必要がありましたが、パッケージをフォークしてソース自体に調整を加える必要がありました。これは私には「クリーン」とは感じられなかったので、「正しい方法」でそれを実行し、パッケージに存在するいくつかのものをオーバーライドしたいと思いました*。具体的には3つのこと:
- それ自体がSessionListenerのサブクラスであるHelloHandlerクラスに属するbuild()と呼ばれる「静的メソッド」
- RPCクラスの"._id"属性(元の実装ではuuidが使用されていましたが、Brocadeボックスはこれをあまり好まなかったため、元の調整では、これを変更されない静的な値に変更しました)。
- XMLフィルター属性を構築するutil関数の微調整
これまでのところ、私はこのコードをファイルに入れていますbrcd_ncclient.py
:
そして、私のファイルnetconftest.py
には次のようなものがあります。
ファイルを実行するたびにnetconftest.py
、タイムアウトエラーが発生します。これは、ログファイルncclient.log
で、サブクラス定義(つまり、hello交換用のXMLを変更するもの-staticmethod build
)が無視されており、Brocadeボックスがその方法を認識していないためです。元のncclientHelloHandler.build()
メソッドが生成しているXMLを解釈します**。また、生成されたログファイルで、メッセージID(静的な値1)やXMLフィルターなど、オーバーライドしようとしている他のものも無視されていることがわかります。
だから、私はここでちょっと途方に暮れています。私は自分の研究からこのブログ投稿/モジュールを見つけました、そしてそれは私が望むことを正確に行うように見えます、しかし私はそれを使うのではなく手でそれをすることによって私が間違っていることを本当に理解できるようになりたいです誰かが私自身でこれを理解する必要がないための言い訳としてすでに書いたモジュール。
*これが「モンキーパッチ」で実際に悪いのかどうか誰かに説明してもらえますか?私の研究では、モンキーパッチは望ましくないことがわかりましたが、この回答とこの回答は私をかなり混乱させています。私にとって、これらのビットをオーバーライドしたいので、自分のncclientのフォーク全体を維持する必要がなくなります。
**もう少しコンテキストを与えるために、ncclient.transport.session.HelloHandler.build()
デフォルトで生成されるこのXMLは、Brocadeボックスが気に入らないようです。
私のオーバーライドさbuild()
れたメソッドの目的は、上記のXMLをこれに変換することです(Brocadeは次のようにしています:
ruby - Ansible Juniper NetConf モジュールから Netconf::OpenError を理解する
Ansible を使用して構成を一部の Juniper デバイスにプッシュしています。始めるために、ここで公式デモから事実を収集する Playbook を調整しようとしています。 実際のジュニパー デバイスの 1 つを使用するようにホスト ファイルを変更しました。Ansible はすべてのモジュール ライブラリがどこにあるかを認識しているようですが、何らかの理由で、ドキュメントがないように見えるエラーがスローされます。Netconf::OpenError
自分のホストでホスト ファイルを使用する以外に、ポート 830 の代わりに tasks/nc_check.yml のポート 22 も変更しました。これは、(私の知る限り)、スイッチにアクセスできるのは SSH (ポート 22)
Juniper モジュールはすべて Ruby で記述されています。インストールしたすべての依存関係のバージョンは次のとおりです。
以下は、デモで提供された同じ Playbook を実行した場合の出力です。私の質問は次のとおりです。
- Netconf::OpenError エラーの原因は何ですか?
Juniper スイッチの Netconf には別のポートを使用する必要がありますか? 使用するポートを知るために、ジュニパーの設定で何を見ればよいでしょうか? (EX4200 および EX4500)
ansible-playbook junos/get_junos_facts.yml -i ホスト -vvv
PLAY [Junos Facts を表示します。必ず -v を使用してください] * ** * ** * ** * ** * ***
TASK: [デバイスへの NETCONF 到達可能性を確認中] * ** * ** * ** * ** * *** <10.113.7.002> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-1384993979.41-2345029032433 && chmod a+rx $HOME/.ansible/tmp/ansible -1384993979.41-2345029032433 && echo $HOME/.ansible/tmp/ansible-1384993979.41-2345029032433'] <10.113.7.002> REMOTE_MODULE wait_for host="10.113.7.002" port=22 timeout="1>" <10.023. tmp/tmpwhWU6X TO /home/gateway/.ansible/tmp/ansible-1384993979.41-2345029032433/wait_for <10.113.7.002> EXEC ['/bin/sh', '-c', '/usr/bin/python /home/ゲートウェイ/.ansible/tmp/ansible-1384993979.41-2345029032433/wait_for; rm -rf /home/gateway/.ansible/tmp/ansible-1384993979.41-2345029032433/ >/dev/null 2>&1'] ok: [10.113.7.002] => {「変更」: false、「経過」: 0 、 "アイテム":
TASK: [ターゲットに連絡して Junos の事実を入手] * ** * ** * ** * ** * **** <10.113.7.002> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-1384993979.48-89494360697375 && chmod a+rx $HOME/.ansible/tmp/ansible -1384993979.48-89494360697375 && echo $ home/.ansible/tmp/ansible-138499979.48-89494360697375 '] <10.113.7.002> compmule tirt = 10.1133.7.pmm.33.7.7.pmmedule = vismule tible = vismule tible_module gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts <10.113.7.002> PUT /tmp/tmp28DLzs TO /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/arguments <1. /bin/sh', '-c', '/usr/local/bin/ruby /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts /home/gateway/.ansible/tmp/ansible-1384993979.48 -89494360697375/引数;rm -rf /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/ >/dev/null 2>&1'] 失敗: [10.113.7.002] => {「失敗」: true、「解析済み」: false無効な出力: /var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/transport.rb:49:in
open': Netconf::OpenError (Netconf::OpenError) from /var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/transport.rb:28:in
/var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/ssh.rb:21:ininitialize' from /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts:46:in
new から「initialize」を /home/gateway/.ansible/tmp/ansible- から1384993979.48-89494360697375/junos_get_facts:46:in `'FATAL: すべてのホストがすでに失敗しています -- 中止します
PLAY RECAP * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * * 再試行するには、次を使用します: --limit @/ホーム/ゲートウェイ/get_junos_facts.retry
10.113.7.002 : OK=1 変更=0 到達不能=0 失敗=1
net-snmp - Netconf + Yangcli + get + フィルター
Netconf サーバーを使い始めたばかりで、それで遊んでみたいと思っています。私はOpenYumaを netconf サーバーとしてインストールしました。クライアントには、提供されたyangcliを最初のアプローチとして使用します。
私の問題は、get コマンドでフィルタリングを使用できないことです。チュートリアルとドキュメントでは使用可能な例ではなく、これらのドキュメントには表示されていない、以前に作成された (外側の) xml ファイルのみが使用されるためです。
サブツリーとxpathという 2 種類のフィルタリングがあることは知っています。どちらを使用すべきかは気にしません。そのうちの 1 つだけを適切に使用したいのです。
yangcliでgetと入力すると、大量のデータが取得されます。この場合、すべてのleafsを含む memInfo部分のみを取得したいと考えています。
私のコマンドを補足/修正してください!!!
yangcli>get filter=('xpath','memInfo') ???
このコマンドはエラーをスローしませんが、空のデータ オブジェクトのみが受信されます。ありがとう
python - NETCONF python ライブラリの xml 無効な属性名に遭遇する
高レベルの Python ライブラリncclientを使用して NETCONF デバイスの構成を編集していますが、次のエラーが発生します。
lxmlライブラリが属性名について不平を言っているので、xml名前空間の問題と関係があると思われます
私がしているのは、デバイスへの接続を作成してから閉じることだけです
スタック トレースは次のとおりです。
netty - netty.io は netconf プロトコルをサポートしていますか?
netconf クライアントを作成しようとしています。私はすでにプロジェクトで netty.io jar を使用しています。netty.io が netconf をサポートしているかどうかを知りたいですか、それともその計画はありますか? netty.io を使用して neconf クライアントを作成する方法はありますか?
簡単な ssh Java プログラムを作成しましたが、特定のポートで netconf に接続しません。だから私は netty.io ライブラリを使用してこれを行うことを考えています。
.net - NETCONF .net/c# の実装
NETCONF ネットワーク管理プロトコルの C#/.Net 実装に詳しい人はいますか?
NetConfWikiを見てみましたが、.net の実装が見つかりませんでした。