この章では、Sun N1 Service Provisioning System ソフトウェアのコマンド行インタフェース (CLI) について説明します。この CLI を使って、サーバーからマスターサーバーへコマンドを送信することができます。この CLI は、シェルプロンプト、DOS プロンプト、スクリプトのいずれかを使って実行できます。ブラウザインタフェースの代わりに CLI を使ってマスターサーバーにアクセスすることもできます。CLI を使用するためには、まずローカルサーバーに Command-Line Interface Client をインストールする必要があります。
CLI は、次のいずれかのモードで実行されます。
単一行モード – このモードでは、完全なコマンドを入力する必要があります。足りない情報があっても、その情報の入力を求めるプロンプトは表示されません。
対話モード – このモードでは、1 個以上のコマンドを実行できるログインセッションがスタートします。この方法でログインセッションを始めた場合、ユーザー認証は 1 回だけで済みます。このモードは、すでにサーバーにインストールされている Jython プログラミング言語に依存しています。『Sun N1 Service Provisioning System 5.2 インストールガイド』を参照してください。
Jython プログラミング言語は、オブジェクト指向の Python 言語の JavaTM 実装です。Command-Line Interface Client をインストールする予定のすべてのシステムに、Jython をインストールする必要があります。詳細については、http://www.jython.org を参照してください。
この章の内容は次のとおりです。
cr_cli コマンドの構文は次のとおりです。
cr_cli -cmd command common-arguments authentication-arguments [ other-arguments ] |
common-arguments は、前述のように、authentication arguments および other-arguments よりも前の位置で使用する必要があります。次の表に、すべてのコマンドでサポートされている common-arguments を示します。
表 1–1 common arguments の使用
引数 |
構文 |
説明 |
|
---|---|---|---|
o |
オプション |
文字列 |
フォーマッタの名前 |
of |
オプション |
文字列 |
出力ファイルの名前 |
h |
オプション |
文字列 |
コマンドのヘルプ |
ほとんどのコマンドでは、認証引数として -u と -p、または -s を使用する必要があります。コマンドが認証引数を必要とするかどうかについては、そのコマンドの説明を参照してください。コマンド行内の認証引数の位置は決まっていませんが、必ず引数 -cmd、-h、-o、-of の後ろに挿入してください。
実行するコマンドの名前。
すべての CLI コマンドは、次の書式を使用する。
subsystem.object.command |
たとえば、ホストをデータベースに追加するコマンドは hdb.h.add。
subsystem はサブシステムの名前。たとえばホストデータベースコマンドは、hdb で表される。
object はコマンドの影響を受けるオブジェクト。たとえばホストは、h で表される。
command はコマンドが実行するアクション。たとえばホストをデータベースに追加するアクション、add などがある
ほとんどの CLI コマンドは認証を必要とするが、ヘルプの表示や使用可能なコマンドの一覧表示には認証は不要。
認証に使用するユーザー名。認証を行うためには、このユーザーのパスワードも指定する必要がある。
ユーザー名とパスワードを入力する代わりに、セッション ID を指定する方法もある。
-u で指定されたユーザーの認証に使用されるパスワード。
コマンド行に指定したパスワードは保護されていない。プロセスリストやシェルのコマンド行履歴に、このパスワードが含まれている可能性がある。したがって、パスワードを保護するには、ユーザー名とパスワードをローカルファイルシステム上のファイルに保存し、コマンドへの入力としてこのファイルを参照するとよい。例 1–1 の最初の例を参照。また、ユーザーがこのファイルを所有していることと、このファイルの読み取りがこのユーザーだけに許可されていることを確認すること。
セッションの認証に使用されるセッション ID。
セッション ID を取得し、認証用として使用する方法については、「ファイルからの入力の読み取り」を参照のこと。
セッション ID を入力する代わりに、引数 -u と -p を使ってユーザー名とパスワードを指定することもできる。
command に関連付けられた引数と値。
cr_cli コマンドは成功時に 0、失敗時に 1 を返します。
プロビジョニングソフトウェアの CLI の使用例を次に示します。
ファイルからユーザー名とパスワードを読み取る例。ファイル .terrypw には、Terry のユーザー名とパスワードが次のような書式で格納されています。
-u terry -p securepasswd |
hdb.h.lo コマンドを認証する場合、Terry は次のコマンドを実行します。
cr_cli -cmd hdb.h.lo exp:.terrypw |
このファイルをローカルファイルシステムに格納し、ファイルのアクセス許可を設定して、このファイルへのアクセスを制限します。詳細については、「ファイルからの CLI 引数の読み取り」を参照してください。
ユーザー terry がホスト barolo7 の情報を取得する例。このコマンドでは、コマンド行に直接パスワードを入力します。
cr_cli -cmd hdb.h.lo -ID NM:barolo7 -u terry -p password |
この方法で指定したパスワードは保護されません。
文字列を引用記号で囲むことによって、空白文字を含む引数を渡す例。ユーザー terry が、myWebServer という名前のコンポーネントの説明を変更します。
cr_cli -cmd cdb.c.mod -comp myWebServer -desc "Version 3.7 of My Web Server" -u terry -p 123xyz |
UNIX® システムでは、空白文字のエスケープ文字として、バックスラッシュ (\) を使用します。
cr_cli -cmd cdb.c.mod -comp myWebServer -u terry -p 123xyz -desc Version\ 3.7\ of\ My\ Web\ Server |
ユーザーが作成したほとんどのオブジェクトには、ID 番号が付けられます。ID 番号は、リポジトリ内のオブジェクト (ユーザーアカウント、コンポーネントなど) を識別する一意の識別子です。
ID 番号は便利ですが、扱いにくい場合もあります。ID 番号の代わりに名前を使用する場合は、NM: 表記を使ってオブジェクト名を入力します。
サポートされている NM: マッピングの一覧は、付録 A 「入力タイプ」に記載されています。
たとえば、ホスト、ユーザー名、ユーザーグループ名、ホストタイプ名などのオブジェクト ID の代わりに、次のような構文を使用することができます。
NM:host NM:user-name NM:user-group-name NM:host-type-name |
NM: 構文では、名前やオプションのバージョン番号を指定して、コンポーネントやプランを識別することができます。
NM:plan-name[:version] |
この表記の使用例を次に示します。
NM:simplePlan NM:simplePlan:1.0 NM:/foo/bar/simplePlan:1.1 |
バージョン番号の指定を省略した場合、最新バージョンが使用されます。
ここでは、CLI の入力としてファイルを使用する方法と、CLI コマンドの出力をファイルに格納する方法について説明します。
コマンド出力をファイルにリダイレクトする場合は、-of 引数を使用するか、シェルリダイレクトを使用します。-of 引数は、ファイルの完全パスを引数として取ります。
たとえば、次のコマンドは、出力を hostFile ファイルに書き込みます。-of 引数は -cmd で指定されたコマンドの直後に指定する必要があります。
cr_cli -cmd hdb.h.add -of hostFile -u user-name -p password -name myhost -tID NM:system#crhost |
コマンドの実行後、hostFile には、出力が detail 書式 (hdb.h.add コマンドのデフォルト出力書式) で追加されます。
出力をファイルにリダイレクトするもうひとつの例としては、格納済みのセッション ID を使用してコマンドを認証する場合があります。まずセッション ID の RPC 直列化表現を session という名前のファイルに保存します。この出力をファイルにリダイレクトするには、次のどちらかの方法を使用します。
シェルリダイレクトを使ってファイルを作成する。
cr_cli -cmd udb.login -o serialized -u user-name -p password > session |
-of 引数を使ってファイルを作成する。
cr_cli -cmd udb.login -o serialized -of session -u user-name -p password |
セッション ID をファイルに格納してあれば、このファイルを別のコマンドへの入力として使用できます。詳細については、「ファイルからの入力の読み取り」を参照してください。
ファイルからコマンドにデータを渡すには、ファイル名に接頭辞 file: を追加して、ファイルを特定します。
たとえば、セッション ID が格納されているファイルがあり、このファイルを使って hdb.h.la コマンドを認証する場合は、コマンドへの入力としてこのファイルを使用します。
cr_cli -cmd hdb.h.la -s file:session |
セッション ID がファイルに格納されていない場合は、接頭辞 ser: を使用することで、serialized バージョンのセッションオブジェクトを直接別のコマンドに渡せます。次の例では、udb.login コマンドと引数 -o serialized を使用して取得された serialized セッションオブジェクトを、sessionStr で使用できます。
cr_cli -cmd hdb.h.la -s ser:sessionStr |
入力ファイルから CLI 引数を読み取るには、識別のため、入力ファイルに接頭辞 exp: を付ける必要があります。まず、CLI に渡す情報をファイルに保存します。引数は、コマンドが要求する順に、1 行に 1 つずつ入力してください。
次に、ファイルに指定した引数をコマンドに渡します。
コマンド引数を指定するには、たとえば、file1.txt ファイルと file2.txt ファイルを exp: と組み合わせて使用します。
file1.txt の内容は次のとおりです。
hdb.h.la -u user-name exp:file2.txt |
file2.txt の内容は次のとおりです。
-p password |
この 2 つのファイルに記述されたコマンドを実行するには、次のように入力します。
cr_cli -cmd exp:file1.txt |
CLI コマンドの出力書式は調整可能です。CLI コマンドの出力書式を指定するには、-cmd で指定したコマンドの直後に -o 引数を指定します。
たとえば、hdb.h.la コマンドの出力書式として string を指定するには、次のように入力します。
cr_cli -cmd hdb.h.la -o string -u user-name -p password |
すべての CLI コマンドで使用できる標準出力書式は次のとおりです。
コマンドごとに、結果の内部文字列表現を生成する。
簡潔な出力を生成する。
XML 直列化テキスト出力を生成する。
この引数は、別のスクリプトに情報を渡すときに使用する。この書式の構造は変更される可能性があるので、書式の構造に依存しないように注意すること。
出力を破棄する。
UNIX システムでは、出力を /dev/null にリダイレクトする。
詳細情報を表示する。この書式は、コマンドによっては使用できない場合がある。
出力書式の指定を省略した場合、デフォルトの出力書式が使用されます。コマンドのデフォルトの出力書式を確認するには、次のコマンドを実行します。
cr_cli -cmd command -h |
ファイルに書き込まれたコマンド出力書式を変更するには、reformat.util コマンドを使用します。reformat.util コマンドは、指定の出力ファイルからデータを読み取り、このデータに指定の出力書式を設定します。
たとえば、次のように、ホストを作成して、hdb.h.add コマンドの出力を hostFile という名前のファイルに serialized 書式で保存したとします。
cr_cli -cmd hdb.h.add -o serialized -u user-name -p password -name myhost -tID NM:roxhost > hostFile |
この出力の書式を hdb.detail に変更する場合は、util.reformat コマンドを使用します。
cr_cli -cmd util.reformat -o hdb.detail -u user-name -p password -self file:hostFile |
コマンドの出力書式が、次のように変更されます。
ID: 010010000204-1027365659275-00170-1199101891 Name: myhost Description: Virtual: false Hidden: false Type ID: 010010001024-0000000000000-00001-0000000004 Attributes: <Table is empty> Applications: <Table is empty> |
CLI コマンドを 1 つずつ実行するときは、cr_cli ツールを使用します。このツールは、CLI を単一行コマンドモードで呼び出します。
単一行コマンドモードでは、コマンドの入力が 1 つずつ受け付けられます。先に入力されたコマンドが完了するまで、次の入力パラメータは受け付けられません。このモードでは、Command Line Execution Client はコマンド履歴を保持しません。
cr_cli コマンドをファイルに格納し、シェルスクリプトから呼び出すことができます。この機能は、実行プランや比較の実行、ホストの生成など、あるタスクを何回も繰り返して実行する場合に便利です。
対話型コマンド行モードでは、シェルとして Jython インタプリタを使用します。このモードでは、CLI を使用すると、次のような利点が得られます。
シェルに格納されたコマンド履歴を利用できます。
Jython スクリプトから プロビジョニングソフトウェアコマンドを呼び出すことができます。
繰り返しの多い複雑な操作に適した、より効果的なスクリプトを作成できます。
CLI Client のインストール先サーバーで、次のコマンドを入力します。
./cr_cli -cmd subsystem.object.command -u user -p password |
CLI Client と Jython のインストール先サーバーで、CLI Jython インタプリタを起動します。
./cr_clij |
スクリプトの先頭に次のコードを追加します。
from clui import * app=PyCLUI() app.execStr(CLI command) app.close() |
app=PyCLUI() の指定で、CLI が呼び出されます。App.close() 呼び出しで、この Jython クラスのインスタンスが削除されます。
Jython の SPS スクリプトでは、execStr および execRaw 呼び出しのみがサポートされています。execRaw から返されるオブジェクトは、ほかの execRaw 呼び出しのパラメータとしてのみ使用できます。execRaw 呼び出しから返されたオブジェクトを execStr 呼び出しのパラメータとして使用しようとすると、呼び出しが失敗します。オブジェクトの toString() メソッドは、execStr 呼び出しに渡す文字列の生成に使用できます。
CLI に関する一般的なヘルプを表示するには、次のように入力します。
cr_cli -help |
特定のコマンドのヘルプを表示するには、次のように入力します。
cr_cli -cmd command -h |
コマンドの説明テキストでは、次の記号で、引数が必須であるかオプションであるかを区別しています。
引数はオプションです。
引数は必須です。
引数は通常はオプションですが、必須になることもあります。
この場合、引数がいつ必要になるかについてのヘルプが表示されます。
例として、hdb.h.add コマンドのヘルプを次に示します。
-u [O/R]: The user username for authentication: String -p [O/R]: The user password for authentication: String -s [O/R]: The session ID for authentication: SessionID -name: The host name: String -desc Optional: The host description: String -tID: The ID of the host type: HostTypeID -attr [O/R]: The host attributes; required if the host type requires them: Hashtable |
この例の場合、必須引数は -name、 -tID、および次の認証引数です。 -u と -p または -s。新しいホストが、ホスト属性を必要とするホストタイプである場合は、-attr 引数も必須になります。
-h を使ってヘルプを呼び出した場合、必須引数を識別する記号、Reqired は使用されません。必須引数は、特別な記号なしで表示されます。
使用可能なコマンドを一覧表示するには、次のように入力します。
cr_cli -cmd -l |
同じコマンド接頭辞を持つコマンドを一覧表示するときは、その接頭辞の後ろにワイルドカード * を指定します。場合によっては、* の前にエスケープ文字としてバックスラッシュ (\) を入力するか、コマンド名の部分を二重引用符で囲む必要があります。たとえば、hdb コマンドを一覧表示するには、次のように入力します。
cr_cli -cmd -l "hdb.*" |
CLI コマンドは、次のカテゴリにグループ分けされています。
cat – カテゴリ
cdb – コンポーネントデータベース
cfg – 構成ジェネレータ
cmp – 比較エンジン
fdb – フォルダレポジトリ
hdb – ホストレポジトリ
net – ネットワークオペレーション
pdb – プランレポジトリ
pe – プランの実行
plg – プラグインレポジトリ
rule – 通知規則
udb – ユーザーレポジトリ
util – その他のユーティリティー