Skip to content

ncclient#

NETCONF プロトコルの基本を理解したところで、いくつかの例に実際に取り組んでみましょう。

実習:ncclient を使用して を表示させる

  1. ターミナルを開き、リポジトリのルートに移動します。
  2. Python 仮想環境(venv)がアクティブであることを確認してください
  3. `cd intro-mdp/netconf`と入力し、このラボのコード ディレクトリに移動します。
  4. インタラクティブな Python インタプリタを開いて、prep.py ファイルを実行します。 このファイルでは、このラボで使用されるさまざまなラボ インフラストラクチャの詳細がインポートされます。
  5. 使用するデバイスは、env_lab.IOS_XE_1 という定数によって表されます。 print(env_lab.IOS_XE_1)
  6. ncclient から manager オブジェクトにインポートします。from ncclient import manager
  7. manager オブジェクトを使用して、IOS_XE_1 への接続を開始します。

    m = manager.connect(
        host=env_lab.IOS_XE_1["host"],
        port=env_lab.IOS_XE_1["netconf_port"],
        username=env_lab.IOS_XE_1["username"],
        password=env_lab.IOS_XE_1["password"],
        hostkey_verify=False
        )   
    

  8. manager オブジェクトの server_capabilities プロパティの部分をループさせて、デバイスの capabilities を確認します

     for capability in m.server_capabilities:
         print(capability)
    

  9. 1 行につき 1 つの capability が出力されます。 各行には、モデル URI、モデル名、モデル バージョンなど、複数のデータが含まれています。次の出力結果には 2 つの capabilities が示されています。結果は、確認しやすいように整形されています。

     urn:ietf:params:xml:ns:yang:ietf-interfaces
       ? module=ietf-interfaces
       & revision=2014-05-08
       & features=pre-provisioning,if-mib,arbitrary-names
       & deviations=ietf-ip-devs
     .
     http://cisco.com/ns/ietf-ip/devs
       ? module=ietf-ip-devs
       & revision=2016-08-10
    

  10. ここで、デバイスへの接続を閉じて NETCONF セッションを終了します。m.close_session()

SSH を手動で操作した先ほどの方法と比べると、はるかに簡単だったのではないでしょうか。