自動化スクリプトのセッションプロトコルについて
Junos XML管理プロトコルは、Junos OSを実行するデバイスから情報を要求し、設定するために使用されるジュニパーネットワークス独自のプロトコルです。NETCONF XML管理プロトコルは、ルーティング、スイッチング、またはセキュリティデバイスの設定情報を要求および変更するために使用される標準です。NETCONFプロトコルは、 RFC 6241、 NETCONF構成プロトコルで定義されており、 これは http://www.ietf.org/rfc/rfc6241.txt で利用可能です。
この関数は jcs:open()
、SLAX および XSLT スクリプトでデバイスとの接続を確立するために使用され、Junos OS を実行するデバイス上の Junos XML プロトコル サーバー、または SSH 経由の NETCONF サービスが有効になっているデバイス上の NETCONF サーバーとのセッションを作成するオプションが含まれています。Junos OS リリース 11.4 以前は、Junos OS を実行するデバイス上で Junos XML プロトコル サーバーとのセッションのみをサポートしていました。NETCONF セッションの追加サポートにより、自動化スクリプトを使用してマルチベンダー環境でデバイスを構成および管理できます。
この機能は jcs:open()
、以下のセッションプロトコルタイプをサポートしています。
junoscript
—Junos OSを実行しているルーティング、スイッチング、またはセキュリティデバイス上のJunos XMLプロトコルサーバーとのセッション。このセッションタイプは、Junos XMLプロトコルとJunos XML APIで定義された操作をサポートします。Junos OSを実行するデバイスを設定したり、デバイスの設定や操作に関する情報を要求したりするために使用されます。これはデフォルトのセッションタイプです。netconf
- SSHv2 接続を介したルーティング、スイッチング、またはセキュリティ デバイス上の NETCONF XML プロトコル サーバーとのセッション。SSH経由のNETCONFサービスで接続が行われるデバイスを有効にする必要があります。SSH上のNETCONFは、RFC 4742、 セキュアSHell(SSH)上のNETCONF構成プロトコルの使用(http://www.ietf.org/rfc/rfc4742.txt で利用可能)に記載されています。junos-netconf
— Junos OS を実行するルーティング、スイッチング、またはセキュリティ デバイス上の SSHv2 接続を介した NETCONF XML プロトコル サーバーとの独自セッション。
Junos OS を実行するデバイス上の NETCONF サーバーには、 でhttp://xml.juniper.net/netconf/junos/1.0
定義されている追加の機能があります。これらのデバイス上の NETCONF サーバーは、NETCONF XML プロトコル操作、ほとんどの Junos XML プロトコル操作、および Junos XML API で定義されたタグエレメントをサポートしています。Junos OS を実行しているデバイスとのjunos-netconf
セッションではnetconf
、NETCONF XML 管理プロトコル開発者ガイドに記載されているネイティブ NETCONF XML プロトコル操作と、設定機能に Junos XML プロトコルで使用可能な拡張機能のみを使用する必要があります。
セッションプロトコルを指定する場合の jcs:open()
関数の構文は次のとおりです。
SLAX 構文
var $connection = jcs:open(remote-hostname, session-options);
XSLT 構文
<xsl:variable name="connection" select="jcs:open(remote-hostname, session-options)"/>
session-optionsこのパラメーターは、セッションタイプと接続パラメーターを指定する XML ノードセットです。セッション タイプは、、 、netconf
または junos-netconf
の 3 つの値のいずれかですjunoscript
。セッションタイプを指定しない場合、デフォルトは 、 でjunoscript
、Junos OSを実行するデバイス上のJunos XMLプロトコルサーバーとのセッションを開きます。ノードセットの形式は次のとおりです。
var $session-options := { <method> ("junoscript" | "netconf" | "junos-netconf"); <username> "username"; <passphrase> "passphrase"; <password> "password"; <port> "port-number"; <instance> "routing-instance-name"; <routing-instance> "routing-instance-name"; }
ユーザー名を指定せず、接続に必要な場合、スクリプトはスクリプトを実行するユーザーのローカル名を使用します。と <password>
要素は<passphrase>
同じ目的を果たします。秘密鍵またはパスワード要素を指定せず、認証に必要な場合は、接続するデバイスによるスクリプト実行時にパスワードを入力するよう求めるプロンプトが表示されます。
Junos OS Evolved実行するデバイスは、この機能を使用して jcs:open()
ローカルまたはリモート接続を確立する場合、パスワードレスログインのみをサポートします。関数の引数としてパスワードを提供したり、Junos OS でサポートされている対話型パスワードを使用したりすることはできません。ローカルまたはリモート接続を有効にするには、パスワードレスログインまたはその他の認証の問題が発生する可能性があります。
オプションで、 および junos-netconf
セッションのサーバーポート番号をnetconf
指定できます。デフォルトの NETCONF サーバー ポート番号は 830 です。または junos-netconf
セッションにポート番号netconf
を指定しない場合、jcs:open()
ポート 830 を使用して NETCONF サーバーに接続します。ただし、ポート番号を指定した場合は、jcs:open()
代わりに指定されたポートに接続します。ポート番号を指定しても、SSHポート22を介して常に確立されるセッションには影響junoscript
しません。
特定のルーティングインスタンス内から SSH 接続をリダイレクトするには、 または routing-instance
要素とルーティングインスタンス名を含instance
めます。ルーティング インスタンスは、 階層レベルで設定する[edit routing-instances]
必要があります。リモートデバイスは、そのルーティングインスタンスのルーティングテーブルを使用するか、そのルーティングインスタンスで設定されたインターフェイスのいずれかから到達可能である必要があります。と routing-instance
要素はinstance
同じ目的を果たします。
特定の接続のプロトコルを検証するには、拡張機能関数を jcs:get-protocol(connection)
呼び出し、接続ハンドルを引数として渡します。この関数は、セッションタイプに応じて、「junoscript」、「netconf」、または「junos-netconf」を返します。
NETCONF サーバーとのセッション確立時に、クライアント アプリケーションと NETCONF サーバーはそれぞれタグ要素を発行<hello>
し、NETCONF 仕様で定義されたもの、または独自拡張として公開されたものからサポートする操作や機能を指定します。および セッションではnetconf
、拡張関数を呼び出すことで、NETCONF サーバーのセッション機能をjcs:get-hello(connection)
取得junos-netconf
できます。
たとえば、Junos OS を実行している一般的なデバイス上の NETCONF サーバーは、以下の機能を返す場合があります。
<hello> <capabilities> <capability>urn:ietf:params:xml:ns:netconf:base:1.0</capability> <capability> urn:ietf:params:xml:ns:netconf:capability:candidate:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:validate:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:url:1.0?protocol=http,ftp,file </capability> <capability>http://xml.juniper.net/netconf/junos/1.0</capability> <capability>http://xml.juniper.net/dmi/system/1.0</capability> </capabilities> <session-id>20826</session-id> </hello>