Cisco CNS Network Registrar Release 6.1 CLI リファレンス
nrcmd プログラムの API としての使用
nrcmd プログラムの API としての使用
発行日;2012/02/03 | ドキュメントご利用ガイド | ダウンロード ; この章pdf | フィードバック

目次

nrcmd プログラムの API としての使用

への接続

認証の実行

スクリプト作成テクニックの選択

nrcmd バッチ ファイルの使用

コマンド構文

プログラム制御の追加

nrcmd プログラムの API としての使用

nrcmd コマンドは、Cisco CNS Network Registrar クラスタを対話的に設定して制御するために使用できます。また、他のプログラムやスクリプトのためのプログラミング インターフェイスとして使用できます。この章では、 nrcmd コマンドをアプリケーション プログラミング インターフェイス(API)として使用する方法について説明します。

 

Network Registrar への接続

nrcmd コマンドを使用すると、Network Registrar クラスタ に接続してコンフィギュレーション データの読み取りと書き込みを行い、状態データを読み取り、制御操作を実行できます。

Network Registrar クラスタは、次のものから構成されます。

データ マネージャである MCD サーバ。DNS、DHCP、TFTP の各サーバのコンフィギュレーションと状態情報が格納された固定データストアへのアクセスを制御します。

サーバ エージェントである Network Registrar Server Agent。プロトコル サーバの起動および停止を行い、プロトコル サーバに標準制御インターフェイスを提供します。

DNS、DHCP、および TFTP プロトコル サーバ。

 

認証の実行

クラスタにログインするときは、名前とパスワードによって認証されます。認証プロトコルは片方向のハッシュを使用し、パスワードが回線上に伝送されないようにします。対話モードでは、 nrcmd コマンドから、有効なユーザ名とパスワードを入力するよう求められます。ユーザ名やパスワードは、コマンドラインや環境変数で指定できます。

管理者パスワードは、コマンド スクリプト内に組み込むと不都合な場合があります。そのため、環境変数エントリを使用して目につきにくい場所に配置できます。環境変数 CNR_CLUSTER、CNR_NAME、および CNR_PASSWORD には、それぞれ、クラスタ、管理者名、および管理者パスワードの値を指定します。

管理者名およびパスワードの作成の詳細については、「admin」を参照してください。

スクリプト作成テクニックの選択

nrcmd は接続時に実行する処理の量が多いため、1 回のセッションで複数のコマンドを実行する方が、コマンドごとに別の接続を開始してログインするよりも効率的です。1 回の nrcmd セッションで複数のコマンドを実行する最も簡単な方法は、 1 行に 1 つのコマンドを記述したバッチ ファイルを作成し、そのファイルから標準入力をリダイレクトすることです。より複雑になりますが、コマンド シーケンスをより高度に制御できる方法は、制御プログラムから nrcmd を実行し、プログラムからコマンドを送信してコマンドの状態と出力を読み取ることです。

nrcmd バッチ ファイルの使用

複数のコンフィギュレーション コマンドを自動的に実行するための最も簡単な方法は、 nrcmd コマンドのバッチ ファイルを作成して、順に実行することです。たとえば、スコープを作成して予約を追加するには、次のコマンドを入力してファイル scope.txt に保存します。シャープ記号(#)で始まる行はコメント行です。

# This set of commands creates a scope and adds four reservations
scope demo1 create 24.10.2.0 255.255.255.0
scope demo1 addReservation 24.10.2.1 1,6,0a:23:45:67:89:01
scope demo1 addReservation 24.10.2.2 1,6,0c:23:45:67:89:02
scope demo1 addReservation 24.10.2.3 1,6,0c:23:45:67:89:03
scope demo1 addReservation 24.10.2.4 1,6,0a:23:45:67:89:04
 

) 最後のコマンドラインの末尾には改行文字が必要です。改行文字がないとコマンドは実行されません。


これで、1 回の nrcmd セッションを実行して、これらのコマンドをすべて実行できます。

% nrcmd -b < scope.txt
 

1 つのバッチ ファイルを使用する利点は、複数のコンフィギュレーション コマンドを 1 回分の接続コストだけで実行できることです。ただし、コマンド(たとえば、前の例では、最初のスコープ作成)が失敗した場合、後続のコマンドが無用であってもバッチ ファイルは続けて実行されます。

session コマンドの assert 機能を使用して、簡単なロジック チェックを実行できます。このコマンドを使用すると、 nrcmd バッチ スクリプトの所定の条件が真であることを確定できます。条件が真の場合、コマンドには影響がありません。偽の場合、バッチ ファイルがその時点で終了します。たとえば、前の例の scope.txt ファイルでは、一連の scope コマンドを実行する前にクラスタがロックされているかどうかを確認できます。

# Quit if cluster cannot be locked
session assert locked
 

session コマンドの詳細については、「session」を参照してください。

コマンド構文

実行する nrcmd コマンドに等号(=)が含まれている場合は、引用符で囲みます。たとえば、1 つのコマンドを使用してクライアントクラス名を作成するには、次のように入力します。

nrcmd -C cluster -N name -P password "client MAC create client-class-name=name"
 

プログラム制御の追加

Network Registrar を自動的に設定して制御するためのより高度な方法は、プログラムまたはスクリプトを使用して nrcmd セッションを開始して、標準入出力を介してセッションと通信することです。

nrcmd を他のプログラムから制御するには、 nrcmd を制御プログラムから起動し、 nrcmd の標準入出力を制御プログラムのファイル ハンドルにリダイレクトする必要があります。この操作により、制御プログラムは、コマンドを入力ファイル ハンドルに書き込み、結果を出力ファイル ハンドルから読み込むことができます。

バッチ モードで実行する場合は、 nrcmd が入力を一度に 1 行ずつ読み取り、新しい行をプロンプトの後に出力します。これによって、次のようなあらゆるコマンドに対応して容易に解析できる一連の行が提供されます。

構文が、 status-line result-lines prompt-line である。

status-line の形式が [0-9]{3} .* である。

0 または 0 より大きい、任意の形式の result-lines が存在する。

prompt-line nrcmd> である。

nrcmd を子プロセスとして起動し、その標準入出力との間で読み取りと書き込みを行う方法の詳細は、制御プログラムを実装するのに使用するプログラミング言語に固有です。