Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

NETCONF Java Toolkitクラス

まとめNETCONF Java Toolkitクラスは、リリース1.0.1以前でサポートされています。

NETCONF Java Toolkit Class:デバイス

オブジェクトは、NETCONF サーバーが存在する構成管理サーバーとデバイス間の SSHv2 接続と、デフォルト net.juniper.netconf.Device の NETCONF セッションを表します。

オブジェクトを作成 Device する場合、SSHv2 接続を作成するには、IP アドレスまたはホスト名と認証の詳細を指定する必要があります。認証には、ユーザー パスワード ベースまたは RSA/DSA 鍵ベースを使用できます。SSHv2 接続のポート番号と、NETCONF サーバーに送信するクライアント機能を指定するオプションも用意されています。

コンストラクタ構文は次のとおりです。

コンストラクタ パラメータは次のとおりです。

  • hostname—(必須)NETCONF サーバーが実行され、SSHv2 から接続するデバイスの IP アドレスまたはホスト名。

  • login—(必須) NETCONF サーバーが実行されているデバイス上のログイン アカウントのユーザー名。

  • password—(必須) ユーザーのパスワードベース認証またはキーベースの認証のパスワード。鍵ベースの認証にパスワードが必要ない場合は、この引数を null として渡します。

  • pemKeyFile—(必須)鍵ベース認証用の DSA/RSA プライベート キーを PEM 形式で含むファイルのパス。ユーザー のパスワードベース認証では、この引数を null として渡します。

  • port—(オプション)SSHv2 接続を確立するためのポート番号。デフォルトのポートは830です。デフォルト ポート以外のポートで NETCONF over SSH 用に設定されたデバイスに接続する場合は、引数にこのポート番号を指定する必要があります。

  • capabilities—(オプション)クライアント機能(機能がデフォルト機能以外の場合に NETCONF サーバーに通信する機能)

    NETCONF サーバーに送信されるデフォルト機能は次のとおりです。

オブジェクトを作成するための一般的な Device 構文は次のとおりです。

デフォルトでは、新 NetconfSession しいインスタンスを作成してNETCONFサーバーに接続する際に Device オブジェクトが作成されます。オブジェクトを作成したら Device 、NETCONF 操作を実行できます。

次の例では、認証済みの SSHv2 接続を持つオブジェクトを IP アドレス Device 10.10.1.1 に作成します。この接続では、ログイン名「admin」と「PaSsWoRd」というパスワードを使用したユーザー パスワードベースの認証を使用します。このメソッド connect() を呼び出すると、デバイスに接続し、デフォルトの NETCONF セッションを自動的に確立します。

デフォルト ポート Device 830 ではなくポート 49000 で NETCONF-over-SSH 接続を使用してオブジェクトを作成するには、コンストラクタの引数にポート番号を追加します。

デバイスに接続するデフォルトのタイムアウト値は5000ミリ秒です。タイムアウト値を別の間隔に設定するには、デバイス オブジェクト setTimeOut() でこのメソッドを呼び出します。

NETCONF Java Toolkit Class:Netconfsesion

オブジェクトは、NETCONF サーバーが存在する設定管理サーバーとデバイス間の net.juniper.netconf.NetconfSession NETCONF セッションを表します。

デフォルトでは、NETCONF セッションは、新しいインスタンスを作成して NETCONF サーバーに接続する際に作成されます。そのため、オブジェクトを明示的に作成する Device 必要 NetconfSession はしません。NETCONF 操作は、関連するメソッドを呼び出してオブジェクト Device から直接実行できます。

ただし、同じ SSHv2 接続で複数の NETCONF セッションが必要になる場合があります。複数のセッションを作成するには、次 createNetconfSession() の例に示 Device すように、オブジェクト上でこの方法を呼び出します。

追加の NETCONF セッションを作成したら、新しいオブジェクトの NETCONF 運用方法を、そのオブジェクトの呼び出しと同じ方法で NetconfSession 呼び出 Device します。

クラス Device とクラスには、リモート プロシージャ コール(RPC)の実行や設定変更の実行など、NETCONF の操作を実行する同じ方法が NetconfSession 多数含まれています。オブジェクト上でメソッドを呼び Device 出す場合、デフォルトの NETCONF セッションで動作します。追加のオブジェクトでメソッドを呼び NetconfSession 出す場合は、その NETCONF セッションで動作します。

例: 複数のNETCONFセッションの作成

次の例では、コード スニペットによって新しいオブジェクトが作成 Device されます。このメソッド connect() が呼び出される場合、プログラムはリモート デバイスに接続し、デフォルトの NETCONF セッションを確立します。2 つ目のオブジェクトを NetconfSession 作成します second_session 。通話はデフォルトの NETCONF セッションのセッション ID を返し、通話は 2 番目の device.getSessionID() second_session.getSessionID() NETCONF セッションのセッション ID を返します。

NETCONF Java Toolkit Class: XML

オブジェクト net.juniper.netconf.XML は XML エンコードされたデータを表し、XML の修正と解析の方法を提供します。XMLオブジェクトは、それが表すXML org.w3c.dom.Document データに対応するオブジェクトを内部で保持します。

XML オブジェクトを使用して、新しい設定、リモート プロシージャ コール(RPC)、または XML ベースのデータを作成推奨します。XML オブジェクトを使用すると、要素と属性を簡単に追加、削除、または変更できます。XML コンテンツを簡単に変更するために、XML オブジェクトは「アクティブ」要素を保持しています。これは、変更のために公開される階層レベルを表します。

XML オブジェクトを作成するには、まずオブジェクトを作成し XMLBuilder 、最初の XML 階層を構築します。メソッド XMLBuilder は、構築できる XML オブジェクトを返します。XML ベースの設定と RPC を作成し、NETCONF サーバーから受信した XML ベースの応答を解析すると便利です。

例: 設定階層の作成

この例では、次の XML 設定階層の例を作成します。設定階層を作成するために使用する手順について、表 1 に示しています

表 1:XMLBuilderおよび XML オブジェクトを使用した設定階層の作成

Java コード

結果の階層

XMLBuilder オブジェクトと 3 レベルの階層を作成します。 XMLBuilder builder = new XMLBuilder();XML policy = builder.createNewConfig("security","policies","policy");

<configuration>
   <security>
      <policies>
         <policy>
         </policy>
      </policies>
   </security>
</configuration>

「ポリシー」レベルでノードを追加 policy.append("from-zone-name","trust");  policy.append("to-zone-name","untrust");

<configuration>
   <security>
      <policies>
         <policy>
 
            <from-zone-name>trust</from-zone-name>
            <to-zone-name>untrust</to-zone-name>
 
         </policy>
      </policies>
   </security>
</configuration> 

最初のポリシーの新しい階層レベルを作成します。 XML policyOne = policy.append("policy");policyOne.append("name","my-sec-policy");

<configuration>
   <security>
      <policies>
         <policy>
            <from-zone-name>trust</from-zone-name>
            <to-zone-name>untrust</to-zone-name>
 
            <policy>
               <name>my-sec-policy</name>
            </policy>
 
         </policy>
      </policies>
   </security>
</configuration>

「match」階層を作成する // アプリケーション アレイ // を作成して追加し、同じノード名を持つ 3 つのノード XML match = policyOne.append("match"); を作成します。 String[] applications =        {"junos-ftp","junos-ntp","junos-ssh"};    match.append("application", applications);

<configuration>
   <security>
      <policies>
         <policy>
            <from-zone-name>trust</from-zone-name>
            <to-zone-name>untrust</to-zone-name>
            <policy>
               <name>my-sec-policy</name>
 
               <match>
                  <application>junos-ftp</application>
                  <application>junos-ntp</application>
                  <application>junos-ssh</application>
               </match>
 
            </policy>
         </policy>
      </policies>
   </security>
</configuration>

「match」の下に要素を追加する  match.append("source-address","any");match.append("destination-address","any");

<configuration>
   <security>
      <policies>
         <policy>
            <from-zone-name>trust</from-zone-name>
            <to-zone-name>untrust</to-zone-name>
            <policy>
               <name>my-sec-policy</name>
               <match>
                  <application>junos-ftp</application>
                  <application>junos-ntp</application>
                  <application>junos-ssh</application>
 
                  <source-address>any</source-address>
                  <destination-address>
                     any
                  </destination-address>
 
               </match>
            </policy>
         </policy>
      </policies>
   </security>
</configuration>

子の「許可」要素を持つ「then」階層を追加します。 policyOne.append("then").append("permit");

<configuration>
   <security>
      <policies>
         <policy>
            <from-zone-name>trust</from-zone-name>
            <to-zone-name>untrust</to-zone-name>
            <policy>
               <name>my-sec-policy</name>
               <match>
                  <application>junos-ftp</application>
                  <application>junos-ntp</application>
                  <application>junos-ssh</application>
                  <source-address>any</source-address>
                  <destination-address>
                     any
                  </destination-address>
               </match>
 
               <then>
                  <permit/>
               </then>
 
            </policy>
         </policy>
      </policies>
   </security>
</configuration>

完全なコードと最終構成

XMLBuilder builder = new XMLBuilder();
XML policy = builder.createNewConfig("security","policies","policy");
policy.append("from-zone-name","trust");
policy.append("to-zone-name","untrust");
XML policyOne = policy.append("policy");
policyOne.append("name","my-sec-policy");
XML match = policyOne.append("match");
String[] applications = {"junos-ftp","junos-ntp","junos-ssh"};
match.append("application", applications);
match.append("source-address","any");
match.append("destination-address","any");
policyOne.append("then").append("permit");
<configuration>
   <security>
      <policies>
         <policy>
            <from-zone-name>trust</from-zone-name>
            <to-zone-name>untrust</to-zone-name>
            <policy>
               <name>my-sec-policy</name>
               <match>
                  <application>junos-ftp</application>
                  <application>junos-ntp</application>
                  <application>junos-ssh</application>
                  <source-address>any</source-address>
                  <destination-address>any
                  </destination-address>
               </match>
               <then>
                  <permit/>
               </then>
            </policy>
         </policy>
      </policies>
   </security>
</configuration>

NETCONF Java Toolkit Class:XMLBuilder

NETCONF セッションでは、設定管理サーバーと NETCONF サーバー間の通信は、XML エンコードのデータを介します。設定管理サーバーがリモート プロシージャ コール(RPC)を NETCONF サーバーに送信し、NETCONF サーバーが RPC を処理して RPC 応答を返します。and net.juniper.netconf.XMLBuilder オブジェクト net.juniper.netconf.XML は、XML エンコードのデータの作成と解析に役立ちます。

XMLBuilder オブジェクトを使用して新しい XML オブジェクトを作成します。コンストラクタ構文は次のとおりです。

XMLBuilder クラスには、XML でエンコードされたデータとして設定階層、RPC、または XML オブジェクトを作成する方法が含まれています。各メソッドは、複数の階層レベルを受け入れて過負荷状態になります。メソッドは XML オブジェクトを返します。たとえば、1 階層の階層で構成、RPC、XML オブジェクトを作成する方法は次のとおりです。

  • createNewConfig(文字列 elementLevelOne )

  • createNewRPC(文字列 elementLevelOne )

  • createNewXML(文字列 elementLevelOne )

次のサンプル コードでは、新しいオブジェクト XMLBuilder を作成します builder 。このオブジェクトは、「セキュリティ」要素、「ポリシー」要素の子タグ、および「ポリシー」の子である「ポリシー」要素から構成される3層構成階層を構築する方法を呼び出します XMLBuilder createNewConfig()

結果の XML 階層は次のとおりです。

この方法では createNewConfig() 、常に上位レベルのルート要素内の階層を囲む必要があります <configuration> 。同様に、 createNewRPC() この方法ではタグ要素内の階層を <rpc> 囲います。

XML オブジェクトを生成すると、クラスからメソッドを呼び出して XML 、そのオブジェクトを操作できます。