Perl クライアント アプリケーションを使用して Junos XML プロトコル サーバーに接続する
以下のセクションでは、Perl クライアント アプリケーション内のオブジェクトを JUNOS::Device 使用して、Junos OS を実行するデバイス上の Junos XML プロトコル サーバーに接続する方法について説明します。
プロトコルの前提条件を満たす
Junos XML プロトコル サーバーは、複数のアクセス プロトコルをサポートしています。Junos OS を実行しているデバイス上の Junos XML プロトコル サーバーに接続するたびに、アプリケーションで使用するプロトコルを指定する必要があります。ネットワークを介して送信する前にすべての情報を暗号化することで、より高いセキュリティを提供するため、SSHまたはSSL(セキュアソケットレイヤー)を使用することをお勧めします。
アプリケーションを実行するには、アプリケーションが使用するアクセス プロトコルの前提条件を満たす必要があります。一部のプロトコルでは、デバイスで設定ステートメントをアクティブ化する、暗号化キーを作成する、またはJunos OSを実行するデバイスまたはアプリケーションが実行されているマシンに追加のソフトウェアをインストールする必要があります。手順については、 Junos XML プロトコル サーバーへの接続を確立するための前提条件を満たすを参照してください。
リクエストのグループ化
Junos OS を実行するデバイス上で Junos XML プロトコル サーバーへの接続を確立することは、アプリケーションが実行する時間のかかるリソース集約型の機能の 1 つです。アプリケーションがルーティングプラットフォームに複数のリクエストを送信する場合、1つの接続のコンテキスト内でそれらのすべてを送信することは理にかなっています。アプリケーションが複数のデバイスに同じリクエストを送信する場合、デバイスのセットまたはリクエストのセットのいずれかを繰り返すスクリプトを構築できます。ただし、アプリケーションは、1 台の Junos XML プロトコル サーバーに対して一度に 1 つのリクエストしか効果的に送信できません。これは、現在の JUNOS::Device 要求に対する Junos XML プロトコル サーバーの応答の終わりを表す終了 </rpc-reply> タグを受け取るまで、オブジェクトがアプリケーションに制御を返さないためです。
JUNOS で必要なパラメータの取得と記録::Dサービス オブジェクト
オブジェクトは JUNOS::Device 、Perl ハッシュ内のキーとして指定された次のパラメーターを取得します。
access—(必須)Junos XML プロトコル サーバーと通信する際に使用するアクセス プロトコル。許容できる値は、「telnet」、「ssh」、「clear-text」、および「ssl」です。アプリケーションを実行する前に、プロトコル固有の前提条件を満たします。hostname—(必須)接続するデバイスの名前。最良の結果を得するには、完全修飾ホスト名またはIPアドレスのいずれかを指定します。login—(必須)Junos XML プロトコル サーバーへの接続を確立してリクエストを発行するユーザー名。ユーザー名は、指定されたデバイス上に既に存在し、アプリケーションによって呼び出された要求を作成するために必要なパーミッション ビットを持っている必要があります。password—(必須)ユーザー名に対応するパスワード。junos_key—(オプション)get_configuration()メソッドを使用して構成データを要求する場合は、XML 形式の設定データの出力に属性を含めるためにjunos:key="key"、パラメーターの値を 1 に設定します。パラメーターの既定値は 0 です。属性はjunos:key="key"、子構成タグ要素が親タグ要素の識別子であることを示しています。属性は、フォーマットされたASCII出力には表示されません。
サンプル スクリプトは、次のように宣言された と呼ばれる %deviceinfoPerl ハッシュにパラメーターを記録します。
my %deviceinfo = (
access => $access,
login => $login,
password => $password,
hostname => $hostname,
junos_key => $junos_key,
);
Junos XML プロトコル Perl クライアント配信に含まれるサンプル スクリプトは、ユーザーがコマンド ラインで入力したオプションからパラメーターを取得します。パラメーター値をインタラクティブに収集する方法の詳細については、「 Junos XML Protocol Perl クライアント アプリケーションでのパラメーターのインタラクティブな収集」を参照してください。アプリケーションは、ファイルまたはデータベースからパラメーターの値を取得することも、1 つまたは複数のパラメーターが一定の場合は、アプリケーション コードにハードコードできます。
アプリケーション固有のパラメーターの取得
アプリケーションは、オブジェクトに JUNOS::Device 必要なパラメーターに加えて、要求に応答して Junos XML プロトコル サーバーから返されるデータを書き込むファイルの名前や、データ変換に使用する Extensible Stylesheet Transformation Language(XSLT)ファイルの名前など、他のパラメーターを定義する必要がある場合があります。
クライアント アプリケーションは、オブジェクトに JUNOS::Device 必要なパラメーターと同様に、アプリケーション コード内の値をハードコードし、ファイルから取得するか、対話型に取得できます。サンプル スクリプトは、オブジェクトで必要な JUNOS::Device パラメータを取得するのと同じ方法で、コマンド ライン オプションからこれらのパラメータの値を取得します( JUNOS::D evice オブジェクトで必要なパラメータの取得と記録を参照)。次に、いくつかの例を示します。
次の行は、ユーザーがコマンド ライン オプションを含む場合、デバッグ トレースを-d有効にします。モジュールで定義されたルーチンをJUNOS::Trace::initJUNOS::Trace呼び出し、オブジェクトと一緒にJUNOS::Deviceインポートします。
JUNOS::Trace::init(1) if $opt{d};
次の行は、 $outputfile コマンド ライン オプションで指定された値に変数を -o 設定します。Junos XML プロトコル サーバーの応答が書き込まれるローカル ファイルの名前を付けます。オプションが -o 提供されていない場合、変数は空の文字列に設定されます。
my $outputfile = $opt{o} || " " ;
diagnose_bgp.pl スクリプトの次のコードは、Junos XML プロトコル サーバーの応答の変換に使用する XSLT ファイルを定義します。最初の行は、$xslfileコマンドラインオプションで指定された値に変数を-x設定します。オプションが指定されていない場合、スクリプトはスクリプトに付属の text.xsl ファイルを使用してデータを ASCII テキストに変換します。ステートメントはif、指定された XSLT ファイルが存在することを検証します。そうでない場合、スクリプトは終了します。
# Retrieve the XSLT file, default is parsed by perl
my $xslfile = $opt{x} || "xsl/text.xsl";
if ($xslfile && ! -f $xslfile) {
die "ERROR: XSLT file $xslfile does not exist";
}
load_configuration.pl スクリプトの次のコードは、新しい設定データを設定データベースにマージ、置換、更新、または上書きするかどうかを定義します。最初の 2 行は、 オプションが$load_action指定されていない場合は、変数を-aコマンド行オプションの値に設定するか、デフォルト値mergeに設定します。指定された値が定数で定義されたVALID_ACTIONS有効なアクションのいずれかと一致しない場合、スクリプトはサブルーチンをoutput_usage呼び出して使用メッセージを出力します。
# The default action for load_configuration is 'merge'
my $load_action = "merge";
$load_action = $opt{a} if $opt{a};
use constant VALID_ACTIONS => "merge|replace|override";
output_usage() unless (VALID_ACTIONS =~ /$load_action/);
接続の確立
オブジェクトに必要なパラメータの値を JUNOS::Device 取得した後、各サンプルスクリプトはそれらをハッシュで %deviceinfo 記録します。
my %deviceinfo = (
access => $access,
login => $login,
password => $password,
hostname => $hostname,
junos_key => $junos_key,
);
その後、このスクリプトは Junos XML プロトコル固有 new のサブルーチンを呼び出し、オブジェクトを JUNOS::Device 作成し、指定されたルーティング、スイッチング、またはセキュリティ プラットフォームへの接続を確立します。接続試行が失敗した場合(オペレーターが ref テストした通り)、スクリプトは終了します。
my $jnx = new JUNOS::Device(%deviceinfo);
unless ( ref $jnx ) {
die "ERROR: $deviceinfo{hostname}: failed to connect.\n";