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 サーバーに送信するクライアント機能を指定するオプションも用意されています。
コンストラクタ構文は次のとおりです。
Device (String hostname, String login, String password, String pemKeyFile) Device (String hostname, String login, String password, String pemKeyFile, int port) Device (String hostname, String login, String password, String pemKeyFile, ArrayList capabilities) Device (String hostname, String login, String password, String pemKeyFile, int port, ArrayList capabilities)
コンストラクタ パラメータは次のとおりです。
hostname
—(必須)NETCONF サーバーが実行され、SSHv2 から接続するデバイスの IP アドレスまたはホスト名。login
—(必須) NETCONF サーバーが実行されているデバイス上のログイン アカウントのユーザー名。password
—(必須) ユーザーのパスワードベース認証またはキーベースの認証のパスワード。鍵ベースの認証にパスワードが必要ない場合は、この引数を null として渡します。pemKeyFile
—(必須)鍵ベース認証用の DSA/RSA プライベート キーを PEM 形式で含むファイルのパス。ユーザー のパスワードベース認証では、この引数を null として渡します。port
—(オプション)SSHv2 接続を確立するためのポート番号。デフォルトのポートは830です。デフォルト ポート以外のポートで NETCONF over SSH 用に設定されたデバイスに接続する場合は、引数にこのポート番号を指定する必要があります。capabilities
—(オプション)クライアント機能(機能がデフォルト機能以外の場合に NETCONF サーバーに通信する機能)NETCONF サーバーに送信されるデフォルト機能は次のとおりです。
urn:ietf:params:xml:ns:netconf:base:1.0 urn:ietf:params:xml:ns:netconf:base:1.0#candidate urn:ietf:params:xml:ns:netconf:base:1.0#confirmed-commit urn:ietf:params:xml:ns:netconf:base:1.0#validate urn:ietf:params:xml:ns:netconf:base:1.0#url?protocol=http,ftp,file
オブジェクトを作成するための一般的な Device
構文は次のとおりです。
Device device_name = new Device (String hostname, String login, String password, String pemKeyFile, <int port>, <ArrayList capabilities>)
デフォルトでは、新 NetconfSession
しいインスタンスを作成してNETCONFサーバーに接続する際に Device
オブジェクトが作成されます。オブジェクトを作成したら Device
、NETCONF 操作を実行できます。
例
次の例では、認証済みの SSHv2 接続を持つオブジェクトを IP アドレス Device
10.10.1.1 に作成します。この接続では、ログイン名「admin」と「PaSsWoRd」というパスワードを使用したユーザー パスワードベースの認証を使用します。このメソッド connect()
を呼び出すると、デバイスに接続し、デフォルトの NETCONF セッションを自動的に確立します。
Device my_device = new Device("10.10.1.1", "admin", "PaSsWoRd", null); my_device.connect();
デフォルト ポート Device
830 ではなくポート 49000 で NETCONF-over-SSH 接続を使用してオブジェクトを作成するには、コンストラクタの引数にポート番号を追加します。
Device my_device = new Device("10.10.1.1", "admin", "PaSsWoRd", null, 49000);
デバイスに接続するデフォルトのタイムアウト値は5000ミリ秒です。タイムアウト値を別の間隔に設定するには、デバイス オブジェクト setTimeOut()
でこのメソッドを呼び出します。
NETCONF Java Toolkit Class:Netconfsesion
オブジェクトは、NETCONF サーバーが存在する設定管理サーバーとデバイス間の net.juniper.netconf.NetconfSession
NETCONF セッションを表します。
デフォルトでは、NETCONF セッションは、新しいインスタンスを作成して NETCONF サーバーに接続する際に作成されます。そのため、オブジェクトを明示的に作成する Device
必要 NetconfSession
はしません。NETCONF 操作は、関連するメソッドを呼び出してオブジェクト Device
から直接実行できます。
ただし、同じ SSHv2 接続で複数の NETCONF セッションが必要になる場合があります。複数のセッションを作成するには、次 createNetconfSession()
の例に示 Device
すように、オブジェクト上でこの方法を呼び出します。
Device device = new Device("10.10.1.1", "admin", "PaSsWoRd", null); device.connect(); NetconfSession second_session = device.createNetconfSession();
追加の 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 を返します。
// Create a device object and a default NETCONF session Device device = new Device("10.10.1.34", "admin", "PaSsWoRd", null); device.connect(); // Create an additional NETCONF session NetconfSession second_session = device.createNetconfSession(); // There are two independent NETCONF sessions String default_session_id = device.getSessionID(); String second_session_id = second_session.getSessionID();
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 に示しています。
<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> <source-address>any</source-address> <destination-address>any</destinationaddress> <application>junos-ftp</application> <application>junos-ntp</application> <application>junos-ssh</application> </match> <then> <permit> </permit> </then> </policy> </policy> </policies> </security> </configuration>
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 ()
XMLBuilder クラスには、XML でエンコードされたデータとして設定階層、RPC、または XML オブジェクトを作成する方法が含まれています。各メソッドは、複数の階層レベルを受け入れて過負荷状態になります。メソッドは XML オブジェクトを返します。たとえば、1 階層の階層で構成、RPC、XML オブジェクトを作成する方法は次のとおりです。
createNewConfig(文字列 elementLevelOne )
createNewRPC(文字列 elementLevelOne )
createNewXML(文字列 elementLevelOne )
次のサンプル コードでは、新しいオブジェクト XMLBuilder
を作成します builder
。このオブジェクトは、「セキュリティ」要素、「ポリシー」要素の子タグ、および「ポリシー」の子である「ポリシー」要素から構成される3層構成階層を構築する方法を呼び出します XMLBuilder
createNewConfig()
。
XMLBuilder builder = new XMLBuilder(); XML policy = builder.createNewConfig("security","policies","policy");
結果の XML 階層は次のとおりです。
<configuration> <security> <policies> <policy> </policy> </policies> </security> </configuration>
この方法では createNewConfig()
、常に上位レベルのルート要素内の階層を囲む必要があります <configuration>
。同様に、 createNewRPC()
この方法ではタグ要素内の階層を <rpc>
囲います。
XML オブジェクトを生成すると、クラスからメソッドを呼び出して XML
、そのオブジェクトを操作できます。