Perl クライアント アプリケーションの NETCONF サーバーに接続する
以下のセクションでは、Perl クライアント アプリケーション内のオブジェクトを NET::Netconf::Manager
使用して、Junos OS を実行するデバイス上の NETCONF サーバーに接続する方法について説明します。
プロトコルの前提条件を満たす
NETCONF サーバーは、複数のアクセス プロトコルをサポートしています。Junos OS を実行しているデバイス上の NETCONF サーバーに接続するたびに、アプリケーションで使用するプロトコルを指定する必要があります。Perl クライアント アプリケーションは、SSH 経由でのみ NETCONF サーバーと通信できます。
アプリケーションを実行する前に、SSHの前提条件を満たす必要があります。これには、 ステートメントを設定してデバイスでNETCONFを有効にする必要 set system services netconf ssh
があります。
グループリクエスト
Junos OS を実行するデバイス上で NETCONF サーバーへの接続を確立することは、アプリケーションが実行する時間のかかるリソース集約型の機能の 1 つです。アプリケーションがデバイスに複数のリクエストを送信する場合は、1つの接続のコンテキスト内ですべてのリクエストを送信することが理にかなっています。アプリケーションが複数のデバイスに同じリクエストを送信する場合、デバイスのセットまたはリクエストのセットのいずれかを繰り返すスクリプトを構築できます。ただし、アプリケーションは 1 台の NETCONF サーバーに対して一度に 1 つのリクエストしか効果的に送信できません。これは、現在の NET::Netconf::Manager
要求に対する NETCONF サーバーの応答の終わりを表す終了 </rpc-reply>
タグを受け取るまで、オブジェクトがアプリケーションに制御を返さないためです。
NET::Netconf::Manager オブジェクトで必要な取得および記録パラメーター
オブジェクトは NET::Netconf::Manager
、Perl ハッシュのキーとして指定された、以下の必要なパラメーターを取得します。
access
—NETCONF サーバーと通信する際に使用するアクセス プロトコル。アプリケーションを実行する前に、SSHの前提条件を満たします。hostname
— 接続するデバイスの名前。最良の結果を得するには、完全修飾ホスト名またはIPアドレスのいずれかを指定します。login
— NETCONF サーバーへの接続を確立してリクエストを発行するユーザー名。ユーザー名は、指定されたデバイス上に既に存在し、アプリケーションによって呼び出された要求を作成するために必要なパーミッション ビットを持っている必要があります。password
— ユーザー名に対応するパスワード。
NETCONF Perl ディストリビューションのサンプル スクリプトは、次のように宣言された と呼ばれる %deviceinfo
Perl ハッシュ内のパラメーターを記録します。
my %deviceinfo = ( 'access' => $access, 'login' => $login, 'password' => $password, 'hostname' => $hostname, );
NETCONF Perl クライアントディストリビューションに含まれるサンプルスクリプトは、ユーザーがコマンドラインで入力したオプションからパラメーターを取得します。パラメーター値をインタラクティブに収集する方法の詳細については、「 NETCONF Perl クライアント アプリケーションでパラメーターをインタラクティブに収集する」を参照してください。アプリケーションは、ファイルまたはデータベースからパラメーターの値を取得することも、1 つまたは複数のパラメーターが一定の場合は、アプリケーション コードにハードコードできます。
アプリケーション固有のパラメーターの取得
アプリケーションは、オブジェクトで NET::Netconf::Manager
必要なパラメーターに加えて、要求に応じて NETCONF サーバーから返されるデータを書き込むファイルの名前など、他のパラメーターを定義する必要がある場合があります。
クライアント アプリケーションは、オブジェクトに NET::Netconf::Manager
必要なパラメーターと同様に、アプリケーション コード内の値をハードコードし、ファイルから取得するか、対話型に取得できます。サンプル スクリプトは、オブジェクトで必要なパラメーターを取得するのと同じ方法で、コマンド ライン オプションからこれらのパラメーターの値を NET::Netconf::Manager
取得します。次に、いくつかの例を示します。
次の行は、ユーザーがコマンド ライン オプションを含む場合、デバッグ トレースを -d
有効にします。
my $debug_level = $opt{'d'};
次の行は、 $outputfile
コマンド ライン オプションで指定された値に変数を -o
設定します。NETCONF サーバーの応答が書き込まれるローカル・ファイルの名前を付けます。オプションが -o
提供されていない場合、変数は空の文字列に設定されます。
my $outputfile = $opt{'o'} || "";
接続の確立
オブジェクトに必要なパラメータの値を NET::Netconf::Manager
取得した後、各サンプルスクリプトはそれらをハッシュで %deviceinfo
記録します。
my %deviceinfo = ( 'access' => $access, 'login' => $login, 'password' => $password, 'hostname' => $hostname, );
その後、このスクリプトは NETCONF 固有 new
のサブルーチンを呼び出し、オブジェクトを NET::Netconf::Manager
作成し、指定されたルーティング、スイッチング、またはセキュリティ プラットフォームへの接続を確立します。接続試行が失敗した場合(オペレーターが ref
テストした通り)、スクリプトは終了します。
my $jnx = new Net::Netconf::Manager(%deviceinfo); unless (ref $jnx) { croak "ERROR: $deviceinfo{hostname}: failed to connect.\n"; }