CIM プローブ
CIM プローブは、WBEM プロトコルを使用して、一連のデータオブジェクトとプロパティについて、特定の CIM サーバー、CIM オブジェクトマネージャーをクエリーします。
プローブパラメーターの設定手順については、「プローブパラメーターを設定」を参照してください。
CIM プローブには、次のパラメーターを渡すことができます。
| パラメーター | 説明 | デフォルト値 |
|---|---|---|
| ソース | [必要] 接続する最初のホストです。 | なし |
| port | 接続するポートです。空の場合、値は「schema」パラメーター:http = 5988, https = 5989 によって決定されます。 | 5988 または 5989 |
| schema | [必要] 使用するスキーマ:「http」または「https」です。 | http |
| namespace | [必要] CIM のネームスペースです。クエリーによって上書きされる場合があります。 | なし |
| クエリ― | [必要] 結果を処理して結果を返すための、CIM プローブクエリーをセミコロンで区切って列挙します。 | なし |
| retries | ネットワーク接続の問題により失敗した場合にクエリーを再試行する回数です。 | 2 |
| connection_timeout | プローブがサーバーにコネクトする際に経過するミリ秒数です。 | 5000 |
| socket_timeout | プローブがデータを読み取る際に経過するミリ秒数です。 | 5000 |
CIM 中間クエリー言語 (CimIQL) は、キー、フィルター、ドット連結を使用して CIM スキーマをスキャンします。
パラメーター展開
CIM クエリー言語は、標準 SNC の前処理されたプローブパラメーター展開をサポートしています。次のように名前をカプセル化してクエリーに変数を配置します。
${foobar}.CIM_RunningOS[0].Name
CIM_ComputerSystem.${barfoo}テキスト ${foobar} は、CIM プローブに渡された foobar プローブパラメーターのコンテンツに置き換えられます。barfoo に対しても同様です。
CIMIQL
CIM 中間クエリー言語 (CimIQL) は、CIM プロバイダをクエリーするプロセスを簡素化するために設計された中間言語です。
CimIQL は現在、標準的な Web ベースのエンタープライズ管理 (WBEM) プロトコルスタックをサポートしていますが、その他 (Web Service Management (WS-MAN) など) も将来追加される可能性があります。クエリー言語の構文は、Microsoft の WMI クエリー言語および UNIX の wbemcli コマンドの要素から取り入れられます。CimIQL ライブラリーは、Pure Java の実装です。
CimIQL の構文
CimIQL の構文は、クエリーやさまざまなトークンを含む複数の要素で構成されます。
| 要素 | 説明 |
|---|---|
| ステートメント | CimIQL の最も基本的な要素は、有効なです。ステートメントには、ピリオドで区切られた複数のクエリーが含まれています。 |
| クエリー | は、プロトコルに依存しない単一の高レベル要求を表します。各クエリーは、「トークン」と呼ばれる、ネストされた言語コンポーネントとサブコンポーネントで構成されています。 |
| トークン | は、CimIQL 構文の特定の字句的側面を記述します。 |
| 運用トークン | 各クエリーの最初のトークンは、実行される全体的な論理操作を表すである必要があります。 |
| コンポーネントトークン | は、運用トークンのサブコンポーネントです。 |
| 結果 | 各クエリーは結果とペアになり、ステートメント内の次のクエリーへの入力として提供されます。は、一連のオブジェクトとそのプロパティで構成されます。 |
CimIQL 運用トークン
CimIQL プローブには、運用トークンが必要です。
次のそれぞれのコア運用は、HTTP による CIM 運用と対応しています。
| リターン値 | 詳細 | HTTP による同等の CIM 運用 |
|---|---|---|
| class object | オブジェクトの取得 固有のキー (キートークンとして) をすべて指定し、オプションのパラメータートークンをカンマで区切って指定することによって、特定のクラスの単一のオブジェクトを取得します。 |
GetInstance |
| class object | オブジェクトの列挙 一連の条件トークンとパラメータートークンに一致するオブジェクトを取得します。 |
EnumerateInstances |
| class object | 関連オブジェクトの列挙 前のクエリーの各結果に関連付けられたオブジェクトを取得します。 |
アソシエーター |
| statement results | 代入 前の名前付きステートメントの結果を、その独自のステートメントの次のクエリーに入力としてフィードする、非運用トークンです。 |
名前付きステートメントの結果の参照 |
オブジェクトトークンの取得
- 固有のキーすべてを (キートークンキートークンとして) 指定し、オプションのパラメータートークンをカンマで区切って指定することによって、特定のクラスの単一のオブジェクトを取得します。このトークンは、とも呼ばれます。
- <クラス名> は、目的のオブジェクトの大文字と小文字を区別する CIM クラス名です。デフォルトでは、指定されたクラスとそのすべての拡張クラスのオブジェクトが取得されます。
- キーおよびパラメータートークンは、一組の波かっこ ({...}) で囲まれています。
- このトークンは、かならずステートメント内の最初のクエリーとして使用する必要があります。
- リターン:クラスオブジェクト
- 例:
CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*
オブジェクトトークンの列挙
- 一連の条件トークンとパラメータートークンに一致するオブジェクトを取得します。このトークンは、とも呼ばれます。
- 条件トークンおよびパラメータートークンは、二組の波かっこ ({{...}}) で囲まれています。条件またはパラメーターが必要ない場合、波かっこはオプションになります。
- <クラス名> は、目的のオブジェクトの大文字と小文字を区別する CIM クラス名です。デフォルトでは、指定されたクラスとそのすべての拡張クラスのオブジェクトが取得されます。
- インデックストークンはオプションです。
- このトークンは、かならずステートメント内の最初のクエリーとして使用する必要があります。
- リターン:クラスオブジェクト
- 例:
CIM_ComputerSystem{{Name!='runtime'}}.*
関連オブジェクトトークンの列挙
- 前のクエリーの各結果に関連付けられたオブジェクトを取得します。
- 条件トークンおよびパラメータートークンは、二組の波かっこ ({{...}}) で囲まれています。プロパティフィルターまたはパラメーターが必要ない場合、波かっこはオプションになります。
- <関連クラス名> は、2 つのオブジェクトを関連付ける多対多または 1 対多のクラスの名前です。デフォルトでは、指定されたクラスとそのすべての拡張クラスのオブジェクトが取得されます。
- 結果のオブジェクトのクラス名に基づいて結果をフィルタリングするために、<パラメータートークン>, ResultClass を指定することができます。
- インデックストークンはオプションです。
- このトークンは、ステートメント内の最初のクエリとして使用することができません。
- リターン:クラスオブジェクト
- 例:
CIM_ComputerSystem{{Name='runtime'}}[2].*
代入トークン
- 前の名前付きステートメントの結果を、その独自のステートメントの次のクエリーに入力としてフィードする、非運用トークンです。
- リターン:void
- 例:
$(lastComputer).ElementName
CimIQL コンポーネントトークン
CimIQL プローブには、運用トークンのサブコンポーネントであるコンポーネントトークンが必要です。
| トークン | 詳細 |
|---|---|
| プロパティトークン | * または <プロパティ名>,<プロパティ名>,... 最終結果セットの各オブジェクトに対してどのプロパティを返すかを指定します。 |
| クエリ区切り文字トークン | . (ピリオド) クエリーを分割します。 |
| インデックストークン | [インデックス] 先行するクエリーの結果を、指定された整数インデックスの単一のオブジェクトに削減します。 |
| キートークン | <キー名>='<値>' 正確な値でキーとして指定されたオブジェクトプロパティに一致します。 |
| 条件トークン | <プロパティ名>< 条件付き演算子><囲まれた値> 指定された条件に基づいて、オブジェクトの単一のプロパティに一致します。 |
| パラメータートークン | <パラメーター名>:'<値>' 呼び出される操作に <パラメーター名> でパラメーターを渡します。パラメーターに応じて、CimIQL の前処理中に、または要求による CIMOM によってパラメーターが使用される場合があります。 |
プロパティトークン
- 最終結果セットの各オブジェクトに対してどのプロパティを返すかを指定します。
- ワイルドカード * を使用すると、利用可能なすべてのプロパティが返されます。それ以外の場合、各プロパティ名はカンマで区切られたリストで提供されます。
- このトークンは、各ステートメントの最後に必要です。
- 例:
CIM_ComputerSystem[0].*
クエリー区切り文字トークン
- クエリーを分割します。
- 例:
CIM_ComputerSystem.PrimaryOwnerContact
インデックストークン
- 先行するクエリーの結果を、指定された整数インデックスの単一のオブジェクトに削減します。
- このトークンは常にオプションです。
- 例:
CIM_ComputerSystem[0].*
キートークン
- 正確な値でキーとして指定されたオブジェクトプロパティに一致します。
- <キー名> は、キーとして使用されるプロパティの名前です。
- 例:
CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*
条件トークン
- 指定された条件に基づいて、オブジェクトの単一のプロパティに一致します。
- <プロパティ名> は、照合するプロパティの名前です。
- <条件付き演算子> は、プロパティの実際の値を予期される値と比較する方法を決定します。利用可能な演算子は、等値 (=) および非等値 (! =) です。
- <囲まれた値> は、次のいずれかである必要があります。
- リテラル値は単一引用符で囲まれます (' ... ')。例:foo='bar'
- 正規表現は、一組のスラッシュで囲まれます (/ ... /)。例:foo=/bar.*/
- 例:
CIM_ComputerSystem{{Name!='runtime'}}.*
パラメータートークン
- 呼び出される操作に <パラメーター名> でパラメーターを渡します。パラメーターに応じて、CimIQL の前処理中に、または要求による CIMOM によってパラメーターが使用される場合があります。
- 例:
CIM_ComputerSystem.CIM_RunningOS{{ResultClass:'Win32_ComputerSystem'}}.*
CimIQL チュートリアル
このチュートリアルは、それぞれの例が前の例でビルドされる例を示しています。
| 順序 | CimIQL ステートメント | 結果 |
|---|---|---|
| 1 | CIM_ComputerSystem [0]. * | CIM_ComputerSystem とその派生のすべてのインスタンスの最初の結果を取得します。すべてのプロパティを取得します。 |
| 2 | CIM_ComputerSystem.PrimaryOwnerContact | CIM_ComputerSystem とその派生のすべてのインスタンスを取得します。1 つのプロパティ、PrimaryOwnerContact のみを取得します。 |
| 3 | CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.* | CIM_ComputerSystem とその派生の単一の固有のインスタンスを取得します。すべてのキートークンは、{} ID トークン内で指定する必要があります。 |
| 4 | CIM_ComputerSystem{{Name!='runtime'}}.* | [名前] プロパティが「runtime」でない CIM_ComputerSystem のすべてのインスタンスと派生を取得します。 フィルタートークン {{}} は、指定されたすべてのプロパティ / キーを含まないインスタンスをフィルタリングします。 |
| 5 | CIM_ComputerSystem{{Name=/^run.*$/}}.* | / / 文字内に含まれる正規表現に一致する値を持つ CIM_ComputerSystem のすべてのインスタンスと派生を取得します。
注: 正規表現には単一の引用符は必要ありません。 フィルタートークン {{}} は、指定されたすべてのプロパティ / キーを含まないインスタンスをフィルタリングします。 |
| 6 | CIM_ComputerSystem{{Name='runtime'}}[2].* | プロパティ名が「runtime」である CIM_ComputerSystem のすべてのインスタンスとその派生について、2 番目の結果を取得します。 操作の順序は、クエリーの構文に従います。
|
| 7 | CIM_ComputerSystem.CIM_RunningOS[0].Name | 各 CIM_ComputerSystem インスタンスの最初の CIM_OperatingSystem インスタンスの名前プロパティを取得します。 中央のトークンである CIM_RunningOS は、最終結果ではなく、アソシエータークラスの名前です。 |
| 8 | CIM_ComputerSystem.CIM_RunningOS{{Name=/CentOS/}}[0].Name | 各 CIM_ComputerSystem インスタンスの最初の CIM_OperatingSystem インスタンスの名前プロパティを取得します。ここで、各 CIM_OperatingSystem インスタンスの名前プロパティには「CentOS」が含まれます。 |
CimIQL 結果
CIM プローブの結果は、<output> 要素内に埋め込まれた XML ドキュメントとしてプローブセンサーに渡されます。
<!-- document root -->
<cimqueryset>
<!-- A single query and query result. Multiple <cimquery> tags may be provided. -->
<cimquery>
<!-- The original query, enclosed by CDATA. -->
<query><!CDATA[[>CIM_ComputerSystem[0].PrimaryOwnerContact<! ]]></query>
<!-- The resulting data is enclosed within a single <result> tag. -->
<result>
<!-- A single class instance result. Multiple <instance> tags may be provided.
Special tags are prefixed with an underscore character. -->
<instance>
<!-- The instance's CIM classname -->
<_classname>Linux_ComputerSystem</_classname>
<!-- A set of this instances identifying keys. Always provided, regardless of property filters.
Within here, each key is provided as <KeyName>VALUE</KeyName> with the VALUE enclosed as CDATA. -->
<_key>
<CreationClassName><![CDATA[Linux_ComputerSystem]]></CreationClassName>
<Name><![CDATA[runtime]]></Name>
</_key>
<!-- Each property that matches the query's property filter will be provided here, in the same format as keys;
As <PropertyName>VALUE<PropertyName> where VALUE is enclosed as CDATA -->
<PrimaryOwnerContact><![CDATA[root@runtime]]></PrimaryOwnerContact>
</instance>
</result>
</cimquery>
</cimqueryset>