Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

OP スクリプトで RPC と運用モード コマンドを使用する方法

ほとんどの Junos OS 運用モード コマンドには、XML と同等の機能があります。Op スクリプトは、 リモート プロシージャ コール (RPC)プロトコルを使用して、ローカルまたはリモート デバイスでこれらの XML コマンドを実行できます。XML と同等の操作モードコマンドはすべて 、Junos XML API 運用開発者リファレンスに記載されています。

OP スクリプトでの RPC および運用モード コマンドの使用については、以下のセクションで詳しく説明します。

OP スクリプトでの RPC の使用

SLAX または XSLT op スクリプトで RPC を使用するには、RPC を変数宣言に含め、RPC 変数を引数として RPC 変数またはjcs:execute()拡張関数を使用して jcs:invoke() RPC を呼び出します。この関数はjcs:invoke()ローカル デバイスで RPC を実行します。この関数はjcs:execute()、接続ハンドルと組み合わせて、リモート デバイスで RPC を実行します。

ローカル デバイスで RPC を呼び出す次のスニペットは拡張され、「 例: Op スクリプトを使用して show interfaces terse Command の出力をカスタマイズする」で詳しく説明されています。

XSLT 構文

SLAX 構文

次のスニペットは、リモート デバイスで同じ RPC を呼び出します。

XSLT 構文

SLAX 構文

Python op スクリプトでは、 RPC は Junos PyEZ API を使用して簡単に実行できます。Junos PyEZ Device クラスの各インスタンスには、 rpc Junos XML API を介して利用可能な任意の RPC を実行できるプロパティがあります。ローカルまたはリモートデバイスとのセッションを確立した後、プロパティとRPCメソッド名をデバイスインスタンスに rpc 追加してRPCを実行できます。戻り値は、タグの下 <rpc-reply> の最初の要素から始まる XML オブジェクトです。

ローカル デバイスで RPC を実行するには、空の引数リストを Device 使用してインスタンスを作成します。リモート デバイスで RPC を実行するには、適切な引数を使用してデバイスに接続するインスタンス Device を作成します。

次のコードは、ローカル デバイスで RPC を呼び出し、応答を印刷します。

Python 構文

次のコードは、リモート デバイスで同じ RPC を呼び出し、応答を印刷します。

Python 構文

リモートデバイスでRPCを実行するには、 SSH セッションを確立する必要があります。スクリプトが接続を確立するためには、スクリプトが実行されるローカルデバイス上のリモートデバイスのSSHホストキー情報を設定するか、リモートデバイスのSSHホストキー情報がスクリプトを実行しているユーザーの既知のホストファイルに存在している必要があります。RPCが実行される各リモートデバイスに対して、以下のいずれかの方法でSSHホストキー情報を設定します。

  • ローカルデバイスでSSH既知のホストを設定するには、 ステートメントを含め、設定の host 階層レベルでリモートデバイスのホスト名とホストキーオプションを [edit security ssh-known-hosts] 指定します。

  • SSHホストキー情報を手動で取得するには、設定モードコマンドを set security ssh-known-hosts fetch-from-server hostname 発行して、Junos OSにリモートデバイスに接続し、キーを追加するよう指示します。

  • ファイルからSSHホストキー情報を手動でインポートするには、設定モードコマンドを set security ssh-known-hosts load-key-file filename 使用し、既知のホストファイルを指定します。

  • または、スクリプトを実行しているユーザーは、ローカルデバイス、リモートデバイスへのSSHにログインしてから、そのユーザーの既知のホストファイルに追加されたホストキーを手動で受け入れることもできます。次の例では、root がルーター1にログインしています。ルーター2でリモートRPCを実行するために、rootは運用モードコマンドを発行してキーをssh router2手動で受け入れることで、ルーター2のホストキーを追加します。

コマンドの RPC タグの表示

デバイスの CLI で、運用モード コマンドの RPC XML タグを表示できます。コマンドの RPC XML タグを表示するには、パイプ 記号 (|) の後に を入力します display xml rpc

以下の例では、 コマンドの RPC タグを show route 表示しています。

SLAX および XSLT スクリプトは、RPC XML タグを使用して RPC を実行できます。Python スクリプトは、RPC タグとコマンド オプションを Python に適した形式に変換する必要があります。RPC の実行に Junos PyEZ を使用する方法、および RPC タグを対応する Python メソッドおよびメソッド引数にマッピングする方法については、 Junos OS を実行するデバイスで Junos PyEZ を使用して RPC を実行するを参照してください。

運用スクリプトでの運用モード コマンドの使用

一部の運用モード コマンドには、XML に相当するものがありません。SLAX および XSLT スクリプトは、 要素を使用して XML と同等のコマンドを <command> 実行できます。Python スクリプトは、クラスで定義された Junos PyEZ cli() メソッドを使用して、これらのコマンドを Device 実行できます。

Junos XML API 運用開発者リファレンスにコマンドがリストされていない場合、コマンドに XML と同等のコマンドはありません。コマンドに XML と同等の値があるかどうかを判断するもう 1 つの方法は、次のようなコマンドの後に コマンドを| display xml発行することです。

出力に 、 <cli><banner>などの<output>タグ要素のみが含まれている場合、 コマンドに XML と同等のものがない場合があります。次の例では、出力は、 コマンドにshow host同等の XML がないことを示しています。

メモ:

XML と同等のコマンドを持つ一部のコマンドでは、パイプ | display xml コマンドの出力に 、 <cli><banner> 以外のタグ要素<output>は含まれません。これは、関連する機能が設定されていないためです。たとえば、 show services cos statistics forwarding-class コマンドには応答タグで<service-cos-forwarding-class-statistics>出力を返す XML 同等のものがありますが、設定に 階層レベルに[edit class-of-service]ステートメントが含まれていない場合、コマンドに表示する実際のshow services cos statistics forwarding-class | display xmlデータはありません。出力は次のようになります。

このため、 Junos XML API 運用開発者リファレンス の情報は通常、より信頼性が高くなります。

SLAX および XSLT op スクリプトには、XML に相当するものがないコマンドを含めることができます。次の<command>コードスニペットに示すように、スクリプト内の 、 <xsl:value-of><output> 、 要素を使用します。このスニペットは拡張され、「例: Op スクリプトを使用した DNS ホスト名情報の表示」で詳しく説明されています。

Python op スクリプトは、Junos PyEZ API を使用することで、XML と同等のコマンドを実行できます。クラスで定義されたDeviceメソッドはcli()、運用モード コマンドを実行し、テキスト形式で出力を返します。例えば:

Junos OS XML 要素としてフォーマットされた出力を返すように指定 format='xml' することもできます。Junos PyEZ cli() メソッドの詳細については、「 http://junos-pyez.readthedocs.org/en/latest/_modules/jnpr/junos/device.html#Device.cli」を参照してください。