この章では、N1 Service Provisioning System software のコマンド行インタフェースについて説明します。
コマンド行インタフェース (Command-Line Interface: CLI) を使用すると、シェルプロンプト、DOS プロンプト、またはスクリプトから Master Server に、コマンドの実行を依頼できます。
CLI を使用するには、Command Line Interface Client をローカルマシンにインストールする必要があります。 また cr_clij ツールを使用して CLI に対話型モードでアクセスする場合は、Jython もローカルマシンにインストールしてください。 システム要件と構成の詳細については、『N1 Service Provisioning System 4.1 インストールガイド』を参照してください。
Command-Line Execution Client は、Master Server にコマンド行インタフェースを提供します。 また Command-Line Execution Client を使用すると、以下のインタフェースからコマンドを実行できます。
Windows のコマンド行または bash などのローカルシェル
sh または Perl を使用するシェルスクリプト
Command Line Execution Client は、これらのコマンドを実行するために、TCP/IP、 SSL、または SSH によって Master Server へのセキュアな接続を確立します。
Command Line Execution Client では、Jython プログラミング言語が使用されています。 Jython は、高レベルで動的なオブジェクト指向言語である Python を Java に実装します。 Command Line Execution Client をインストールする予定のシステムには、必ず Jython をインストールしてください。 Jython と Jython のダウンロードの詳細については、http://www.jython.org を参照してください。
CLI は、Windows プロンプト、シェル、スクリプトなどの HTML 以外のインタフェースを通して N1 Service Provisioning System software にアクセスするためのツール群です。 CLI コマンドは、ファイルのチェックインなどの プロビジョニングソフトウェア の操作を自動化するために、スクリプトで使用できます。 また CLI コマンドを使用して、Web ブラウザや HTTP 接続のないシステムから Master Server へアクセスすることも可能です。
CLI の実行には、Command Line Execution Client が必要です。Command Line Execution Client は、Master Server にネットワーク接続できるサーバーであればどのサーバーでもインストールできます。 クライアントは、コマンドをネイティブオブジェクトに構文解析し、Master Server に送信します。 次にクライアントは、コマンドの結果をテキスト形式に変換し、ユーザーに示します。
ほとんどの CLI コマンドでは、ログイン認証が実施されます。 ユーザーは、各コマンドでユーザー名とパスワードまたはセッション ID を指定して認証を行います。
cr_cli と cr_clij のどちらで呼び出された場合でも、すべての CLI コマンドは以下の書式を使用します。
subsystem.object.command arguments |
たとえば、ホストをデータベースに追加するコマンドは hdb.h.add です。 このコマンドは、以下を特定する 3 つの要素で構成されています。
サブシステム。この場合、ホストのデータベース (hdb)
操作対象のオブジェクト。この場合、ホスト (h)
コマンドまたは操作。この場合、追加 (add)
コマンド行インタフェースを呼び出すツールは、以下の 2 つです。
cr_cli。一行コマンドモードで動作し、一度に 1 つのコマンドを実行します。
cr_clij。対話型コマンドモードで動作し、Jython インタプリタを使用します。
コマンド行インタフェースのコマンドでは、一部を除いてユーザー名とパスワードまたはセッション ID による認証が必要です。
cr_cli -cmd [command] -u [user] -p [password] |
コマンドのヘルプを参照する場合や使用可能なコマンドをすべて一覧表示する場合は、ユーザー名とパスワードは必要ありません。
セキュリティを強化したい場合は、ファイルにパスワードを設定してから、そのファイルをコマンドに渡します。 こうすることで、パスワードを含むファイルへのアクセスを制限するファイルシステムを使用できます。 認証が必要なコマンドをセキュアに入力するには、以下のメソッドを使用してください。 この手法の詳細については、「ファイルから CLI への引数の受け渡し」を参照してください。
パスワード付きファイルを作成し、そのファイルをコマンドに渡します。
cr_cli -cmd [command] -u [user] -p exp:[passwordfile] |
すべての使用可能なコマンドを一覧表示するには、以下を入力します。
cr_cli -cmd -l |
あるコマンド接頭辞を持つコマンドをすべて一覧表示するには、接頭辞の後にワイルドカード * を使用します。 たとえば、以下のコマンドはすべての hdb コマンドを一覧表示します。
cr_cli -cmd -l hdb.* |
CLI についての一般的なヘルプにアクセスするには、以下のコマンドを入力します。
cr_cli -help |
特定のコマンドのヘルプを参照するには、以下のコマンドを入力します。
cr_cli –cmd <commandname> –h |
CLI の構文には以下が含まれます。
使用される CLI ツールの初期指定
cr_cli (各コマンドの最初に指定)
cr_clij (CLI を最初に呼び出すときに指定)
CLI コマンド
コマンドに必要な引数
任意の追加引数
認証に使用される引数。 以下のどちらかになります。
-u user および -p password 引数
-s sessionID 引数。この引数は、認証ユーザーのセッション ID を指定します (-s オプションの使用例は、「それぞれの CLI 引数へのデータの受け渡し」を参照してください)。
以下に一般的な CLI の構文の例を示します。
表 4–1 CLI コマンドの構文
cr_cli |
-cmd hdb.h.lo |
-ID |
NM:barolo7 |
-u user -p password |
---|---|---|---|---|
一行コマンド行インタフェースを呼び出す |
呼び出すコマンドの名前 |
コマンドの引数 |
値を必要とする引数に指定する値 |
認証のためのユーザー名とパスワード。 セッション ID を代わりに指定することもできる |
CLI コマンドからの出力結果はいろいろな目的で使用されるため、情報を返すために CLI コマンドが使用する書式は調整できます。 CLI 出力書式は 2 種類あります。
すべての CLI コマンドで使用可能な標準出力書式
オプションのコマンド固有の出力書式
CLI は、以下の出力書式をサポートしています。
表 4–2 CLI 書式のオプション
書式のオプション |
結果 |
---|---|
string |
短い出力を行う。 事後処理に使用する |
serialized |
XML 直列化テキストを出力する。 別のスクリプトに情報を渡すときに使用する |
sink |
出力を破棄する。 UNIX システムでは /dev/null に出力される |
detail |
出力を表形式にフォーマットする。 詳細情報も含まれる |
出力書式を指定しない場合、コマンドはデフォルト書式で出力を行います。
あるコマンドのデフォルト出力書式を調べるには、以下のように -h をつけてコマンドを実行し、そのコマンドのヘルプ情報を参照してください。
cr_cli –cmd <commandname> –h |
デフォルト出力書式は、ヘルプの下部分にアスタリスクで囲んで表示されます。
-h 引数を使用すると、コマンドで使用可能なコマンド固有の出力書式も調べられます。表 4–3 に、コマンド固有の出力書式を示します。
表 4–3 CLI コマンドファミリのコマンド出力書式
コマンド書式 |
説明 |
---|---|
cdb.detail |
コンポーネントの詳細テキストの出力 |
cmp.detail |
比較の詳細テキストの出力 |
hdb.detail |
ホストデータの詳細テキストの出力 |
net.detail |
ネットワークデータの詳細テキストの出力 |
net.summary |
ネットワークデータの概要の出力 |
pdb.detail |
プランの詳細テキストの出力 |
pe.detail |
プラン実行の詳細出力 |
rule.detail |
通知規則の詳細テキストの出力 |
udb.deep |
ユーザーとユーザーグループを説明する非常に詳細なテキストの出力 |
udb.detail |
ユーザーとユーザーグループを説明する詳細テキストの出力 |
udb.summary |
ユーザーとユーザーグループを説明する概要テキストの出力 |
CLI コマンドの出力書式を指定するには、-o 引数をコマンドの最初の引数として使用します。 たとえば、hdb.h.la コマンドに対して string 出力書式を選択するには、以下のコマンドを実行します。
cr_cli -cmd hdb.h.la -o string -u [user] -p [password] |
指定する出力書式は、この例のように、コマンドの後、他のすべての引数の前に入力してください。
コマンドの結果データを外部ファイルに渡す場合は、-of オプションを使用できます。 -of を使用して、N1 Service Provisioning System software が実行コマンドからのデータを保存するファイルの名前をフル指定します。
たとえば、myhost という名前のホストの作成によって生じたデータを hostFile というファイルに渡すには、以下を入力します。
cr_cli -cmd hdb.h.add -of hostFile -u [user] -p [password] -name myhost -tID NM:roxhost |
fileHost ファイルには、ホスト情報が detail 書式で記載されます (hdb.h.add コマンドのデフォルトフォーマッタ)。
-of オプションは、コマンドの後、他のすべての引数の前に入力してください。
データを外部ファイルから CLI に渡す場合は、file: オプションを使用できます。 たとえば、開始したばかりのセッションのセッション ID を格納して、コマンドの認証に使用できます。
セッション ID を session というファイルに保存するには、以下を入力します。
cr_cli -cmd udb.login -u [user] -p [password] > session |
次に、そのセッション ID を他のコマンドに渡すには、以下を入力します。
cr_cli -cmd hdb.h.la -s file:session |
ファイルに渡したコマンドの出力書式を変換する場合は、reformat.util コマンドを使用できます。
util.reformat コマンドは、指定した出力ファイルからデータを読み取り、そのデータの書式をユーザーが選択した出力書式に変更します。
たとえば、ホストを作成して、hdb.h.add コマンドからの出力を 直列化書式で hostFile というファイルに格納しているとします。
cr_cli -cmd hdb.h.add -o serialized -u [user] -p [password] -name myhost -tID NM:roxhost > hostFile |
前のコマンドの出力に対して util.reformat を実行し、 「それぞれの CLI 引数へのデータの受け渡し」 に説明のある file: オプションでデータを hostFile に渡して、detail 書式を使用するように指示できます。
cr_cli -cmd util.reformat -u [user] -p [password] -o hdb.detail -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 に引数を渡す場合は、Expand オプションを使用できます。 このオプションを実行するには、CLI に渡す情報を入力するファイルを作成します。 各引数とその値は、それぞれ別の行にリストしてください。 また引数は、コマンドが必要とする順にリストしてください。 これらの引数をコマンドに渡すには、コマンドを呼び出し、exp: 引数を最初の引数として入力します。
たとえば、 exp: オプションと一緒に使用できる 2 つのファイル (file1.txt と file2.txt) があるとします。
file1.txt:
hdb.h.la -u [user] exp: file2.txt |
file2.txt:
-p [password] |
これらを実行するには、以下を入力します。
cr_cli -cmd exp:file1.txt |
最初のファイルが次のファイルを呼び出し、コマンドを実行します。
説明や空白を含む他の修飾子は、以下のように引用符で囲んでください。
"This is a multi-word description.” |
空白をそれぞれバックスラッシュ (\) でエスケープすることもできます。
作成するオブジェクトの大部分は、関連する ID 番号を持っています。 ID 番号は、リポジトリ内のユーザーアカウントやコンポーネントのようなエンティティの一意の識別子です。
ID 番号は一意なので便利ですが、引数としてコマンドに入力するのは大変です。 ID 番号ではなく名前を使用する場合は、NM: タグでコマンド行にオブジェクトの名前を記述することができます。
表 4–6 に、サポートされている NM: マッピングすべての包括的なリストを示します。
完全な ID 番号ではなくオブジェクト名を使用する場合は、以下の構文で CLI コマンドのオブジェクト ID を表します。
NM:<host|user|user group name|host type name|etc.> |
空白は入れないでください。
NM: 構文を使用して、コンポーネントとプランを特定することもできます。 またオプションで、名前以外にバージョン番号を指定することも可能です。
plan = NM:<plan name>[:<version>] |
例:
NM:simplePlan NM:simplePlan:1.0 |
バージョン番号を指定しない場合、N1 Service Provisioning System software は最新バージョンのコンポーネントまたはプランを使用します。
リポジトリ内のオブジェクトは相互に深い関連性をもっているので、オブジェクトを削除することはできません。 ワークスペースを整理しておくために、現在使用していないオブジェクトを非表示にすることは可能です。
オブジェクトを非表示にしても、オブジェクトがアクティブでなくなったり、使用できなくなることはありません。 たとえば、コンポーネントが参照しているリソースが非表示になった場合でも、そのリソースは、次回のコンポーネント作成でも参照されます。 リソースは、無効にされたり削除されるのではなく、単に表示されなくなるだけだからです。
以下のオブジェクトは、表示または非表示を指定できます。
ホスト
ホストタイプ
ホストセット
ホスト検索
ユーザー
プラン
コンポーネント
CLI を通して使用できるコマンドは、いくつかの主要カテゴリに分類されます。
表 4–4 サブシステムと CLI 接頭辞
サブシステム |
CLI 接頭辞 |
---|---|
カテゴリ |
cat |
コンポーネントデータベース |
cdb |
構成ジェネレータ |
cfg |
比較エンジン |
cmp |
ホストデータベース |
hdb |
ネットワーク操作 |
net |
プランデータベース |
pdb |
プランの実行 |
pe |
通知ルール |
rule |
ユーザーデータベース |
udb |
その他のユーティリティー |
util |
このマニュアルのコマンドの説明とヘルプフラグによって参照できる各コマンドの説明では、コマンドの必須引数とオプション引数は以下のように表記されます。
表 4–5 引数の O/R 表記
表記 |
意味 |
---|---|
[O] |
省略可能引数 |
[R] |
必須引数 |
[O/R] |
通常、省略可能引数であるが必須の場合もある |
たとえば、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 [O]: 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) とホストタイプ ID (-tID) だけです。 ただし、新しいホストのホストタイプで、ホストの属性を指定する必要がある場合、-attr 引数も使用しなければなりません。
上の例のように、コマンドのヘルプ情報では、必須引数を意味する [R] 表記は使用されません。 必須引数は、[O] や [O/R] を付けずに一覧表示されるだけです。 上の -name 引数がこの例です。
一度に 1 つの CLI コマンドを実行するには、cr_cli ツールを使用します。 このツールは、CLI を一行コマンドモードで呼び出します。
一行コマンドモードでは、一度に 1 つのコマンドを入力として受け付けます。 実行を依頼される各コマンドは正確に入力してください。対話式に次の入力パラメタを求められるわけではありません。 このモードで動作する場合、Command Line Execution Client はコマンド履歴を保持しません。
ここでは、例として cr_cli ツールで CLI コマンド実行します。 このコマンドは、prodserver タイプのホストをホストデータベースに追加します。 このコマンドを実行するユーザーである rbarnes は、認証パスワードを Master Server に提出します。
cr_cli –cmd hdb.h.add -user rbarnes -p XyZ572 -name webb1 –desc `web server 1' –tID prodserver |
cr_cli コマンドは、ファイルに格納して、シェルスクリプトから呼び出せます。 これは、実行プランの実行、比較、ホストへのデータ入力などの反復的なタスクで便利です。
対話型コマンド行モードは、シェルとして Jython インタプリタを使用します。 このモードで動作する場合の CLI の利点は次のとおりです。
1 行にコマンド全体を入力する必要がありません。 コマンド名を入力後、cr_clij コマンドが促すコマンド引数を入力するだけです。
シェルに格納されたコマンド履歴を利用できます。
Jython スクリプト内から N1 Service Provisioning System software のコマンドを呼び出せます。
複雑で反復的な操作に対して、強力なスクリプトを作成できます。
Jython スクリプト内からコマンドを呼び出すには、スクリプトの最初に以下のコードを記述します。
from clui import * app=PyCLUI() app.execStr(CLI command) App.close() |
app=PyCLUI() という代入式で CLI が呼び出されます。 App.close() 呼び出しは、この Jython クラスのインスタンスを削除します。
表 4–6 では、CLI コマンドに渡される各種入力引数の構文を説明します。
表 4–6 CLI の入力タイプの構文
入力タイプ |
構文 |
---|---|
AppInstance、AppInstanceID |
NM:<host name>:(RA|LD|MS) または [ID:]<ID> |
AppTypeCriteria |
<comma or pipe separated list of (RA|LD|MS)> または EMPTY |
AttributeCriteriaList |
<semicolon separated list of <attribute criteria>> ここで <attribute criteria> は <attribute name>-(contains|equals)-<glob pattern value> また <attribute name> は以下のどれか name または description または hostTypeName または IP または parentHostName または <user defined name> |
Boolean |
大文字小文字の区別なく、以下のどれか true または yes または t または + または false または no または f または - |
Category、 CategoryID、 Category ID Set |
<ID> ID:<ID> NM:<category name> |
CompCheckInID |
[ID:]<ID> |
ComponentTypeRefID |
NM:<comp type ref name> [ID:]<ID> |
Component、 ComponentID |
NM:<comp name>[:<build number>] または [ID:]<ID> |
ComponentVariableSettings、ComponentVariableSettingsID |
NM:<comp name>[:<version>]:<var settings name> または [ID:]<ID> |
CriteriaShorthand |
any または planStart または planEndNormal または planEndAbnormal または diffStart または diffEndNormal または diffEndAbnormal または system または admin または custom |
DifferenceSettings、 DifferenceSettingsID |
NM:<diff name> または [ID:]<ID> |
ExecutionPlan、 ExecutionPlanID |
NM:<plan name>[:<version>] または [ID:]<ID> |
Group、 GroupID |
NM:<group name> または [ID:]<ID> |
Hashtable |
<semicolon separated list of <key>[=<value>]> ここで <value> は以下のどれか <single value> または [<comma separated list of <single values>>] 例: color=red;emptykey または arraykey=[value1,value2] |
Host、 HostID |
NM:<host name> または [ID:]<ID> |
HostIDArrayArray |
<semicolon separated list of <host ID arrays>> ここで <host ID array> は <comma separated list of <host or host set IDs>>。 また <host or host set ID> は以下のどれか HS:<HostSetID> または H:<HostID> 例 : H:NM:host1 または HS:NM:hostSetFoo,H:NM:h1;H:NM:h2 |
HostIDSet |
<comma separated list of <HostIDs>> |
HostSearch、 HostSearchID |
NM:<host search name> または [ID:]<ID> |
HostSearchIDSet |
<comma separated list of <HostSearchIDs>> |
HostSet、 HostSetID |
NM:<host set name> または [ID:]<ID> |
HostSetIDSet |
<comma separated list of <HostSetIDs>> |
HostType、 HostTypeID |
NM:<host type name> または [ID:]<ID> |
HostTypeVarList |
<semicolon separated list of <key>[=<single value>] |
InputStreamWrapper |
- {stdin} または <input filename> |
InstalledComponentRef |
<comp name>:<comp build>:<install path> |
InstalledResourceRef |
<resource ID>:<install path> |
Level |
host または dir または file |
NamedBlockType |
以下の 3 つの直定数のどれか install uninstall call |
OutputStreamWrapper |
以下のどれか [+]<filename> {プラスは追加という意味} - {stdout} -: {stderr} |
Permission、 PermissionID |
NM:userdb.read または NM:userdb.write または NM:host.read または NM:host.write または NM:hostType.read または NM:hostType.write または NM:rule.read または NM:rule.write または NM:component.read または NM:component.write または NM:plan.read または NM:plan.write または NM:plan.run:allhosts または NM:plan.run:<host set name> または NM:diff.read または NM:diff.write または NM:diff.run:allhosts または NM:diff.run:<host set name> または [ID:]<ID> |
PhysicalCriteria |
<comma or pipe separated list of (VIRT|PHYS)> または EMPTY |
ReaderWrapper |
- {stdin} または <input file name> |
ResourceID |
[ID:]<ID> |
RoxAddress |
<IP name or address>:<port number> |
RuleID, RuleMetaData |
NM:<rule name> または [ID:]<ID> |
Scope |
component または host または hostset |
SystemServiceRefID |
NM:<system service ref name> [ID:]<ID> |
SeverityArray |
<empty> または INFO[+] {プラスは「以上」という意味} または WARNING[+] または ERROR[+] |
StringArray |
<comma separated list of <strings>> |
StringArrayArray |
<semicolon separated list of <StringArrays>> |
Style |
mm {モデルからモデル} または mi {モデルからディレクトリ} または ii {ディレクトリからディレクトリ} |
TimeInterval |
- {無限} または @<Date> {現在から Date まで} または [<weeks>w][<days>d] [<hours>h][<minutes>m] [<seconds>s][<millisecs>ms] または [<weeks>w][<days>d] [<hours>:]<minutes>[. <seconds>[.<millisecs>]] |
User、 UserID |
NM:<user name> または [ID:]<ID> |
WriterWrapper |
以下のどれか [+]<filename> {プラスは追加という意味} - {stdout} -: {stderr} |