Solaris WBEM Services の管理

第 4 章 MOF コンパイラ

この章では、Managed Object Format (MOF) コンパイラについて説明します。内容は次のとおりです。

MOF コンパイラについて

Managed Object Format (MOF) コンパイラは、MOF を宣言しているファイルを解析し、ファイルに定義されているクラスやインスタンスを Java クラスに変換し、管理データを一元的に保存する CIM Object Manager Repository にそれを追加します。コンパイラは、MOF ファイルに #pragma namespace("namespace_path") が指定されていなければ、Java クラスをデフォルトのネームスペース root¥cimv2 に読み込みます。

MOF コンパイラを起動する mofcomp コマンドは 各 CIM スキーマのインストール前に実行され、CIM スキーマと Solaris スキーマを記述する MOF ファイルをコンパイルします。CIM スキーマは、どの管理環境にもある管理オブジェクトを表すためのクラス定義の集合です。Solaris スキーマは CIM スキーマを拡張したもので、一般的な Solaris オペレーティング環境の管理オブジェクトを表すクラス定義の集合です。

MOF は、CIM のクラスやインスタンスを定義する言語です。MOF ファイルは、MOF 言語を使って CIM オブジェクトを記述する ASCII テキストファイルです。CIM オブジェクトは、プリンタ、ディスクドライブ、CPU などの管理リソースをコンピュータ用に表現したモデルです。

管理リソースの情報は MOF ファイルに格納されることがあります。MOF は Java に変換できるため、Java Virtual Machine をもつシステムで動作するアプリケーションならこの情報の解釈や交換を行うことができます。さらに、インストール後に、mofcomp コマンドを使って MOF ファイルをいつでもコンパイルできます。

mofcomp コマンド

mofcomp コマンドは、指定された MOF ファイルを CIM のクラスやインスタンスにコンパイルします。これらのクラスやインスタンスは Java クラスとして CIM Object Manager Repository に格納され、CIM Object Manager に渡されます。

mofcomp コマンドは、root として実行するか、コンパイルが行われているネームスペースに書き込み権をもつユーザーとして実行する必要があります。

/usr/sadm/bin/mofcomp [-h ] [-v ] [-sc ] [-si ] [-sq ] [-version] [ -c cimom_hostname ] [-p password ] [-u username ] file
-help

mofcomp コマンドに対する引数を一覧表示します。

-c [cimom-host]

CIM Object Manager が動作するシステムを指定します。

-p [password]

CIM Object Manager に接続するためのパスワードを指定します。このオプションは、コンパイルで CIM Object Manager への特権アクセスが必要なときに指定します。-p-u を両方とも指定するとコマンド行にパスワードを入力する必要があるため、セキュリティリスクを伴います。パスワードをより安全に入力したい場合は、-u だけを指定し、-p を指定しなければ、コンパイラがパスワードのプロンプトを表示します。

-sc

クラスの設定 (set class) オプションを使ってコンパイラを実行します。このオプションは、指定されたクラスが存在し、それにインスタンスがないとそのクラスを更新し、クラスが存在していないとエラーを返します。このオプションを指定しないと、コンパイラは、接続されているネームスペースに CIM クラスを追加し、そのクラスがすでに存在していればエラーを返します。

-si

インスタンスの設定 (set instance) オプションを使ってコンパイラを実行します。このオプションは、指定されたインスタンスが存在しているとそのインスタンスを更新し、存在していないとエラーを返します。このオプションを指定しないと、コンパイラは、接続されているネームスペースに CIM インスタンスを追加し、そのインスタンスがすでに存在していればエラーを返します。

-sq

修飾子タイプ (set qualifier types) オプションを使ってコンパイラを実行します。このオプションは、指定された修飾子タイプが存在しているとその修飾子タイプを更新し、存在していないとエラーを返します。このオプションを指定しないと、コンパイラは、接続されているネームスペースに CIM 修飾子タイプを追加し、その修飾子タイプがすでに存在していればエラーを返します。

-u

CIM Object Manager に接続するためのユーザー名を指定します。このオプションは、コンパイルで CIM Object Manager への特権アクセスが必要なときに指定します。-p-u を両方とも指定するとコマンド行にパスワードを入力する必要があるため、セキュリティリスクを伴います。パスワードをより安全に入力したい場合は、-u だけを指定し、-p を指定しなければ、コンパイラがパスワードのプロンプトを表示します。

-v

コンパイラを詳細モードで実行します。コンパイラメッセージが表示されます。

-version

MOF コンパイラのバージョンを表示します。

mofcomp コマンドは、正常に終了した場合は 0、失敗した場合は正の整数を返します。

MOF ファイルのコンパイル

コンパイルする MOF ファイルには、.mof 拡張子が付いていても付いていなくてもかまいません。CIM スキーマや Solaris スキーマを記述する MOF ファイルは /usr/sadm/mof にあります。

MOF ファイルをコンパイルする方法
  1. パラメータを指定せずに MOF コンパイラ を実行するには、次のコマンドを入力します。

    % mofcomp filename
    

    たとえば、mofcomp /usr/sadm/mof/Solaris_Schema1.0.mof と入力すると、指定した MOF ファイルがコンパイルされます。

次の例は、Solaris_System1.0.mof ファイルの例で、Solaris オペレーティング環境でのプロセス、オペレーティングシステム、ファイルシステムなどの管理リソースを表しています。


例 4-1 Solaris_System1.0 ファイル

// ===================================================================
// Title:       Solaris System MOF specification 1.0
// Filename:    Solaris_System1.0.mof
// Version:     1.0
// Author:      Sun Microsystems, Inc.
// Date:        02/01/1999
// Description:
// ===================================================================
 
// ==================================================================
// Pragmas
// ==================================================================
#pragma Locale ("en-US")
 
// ==================================================================
// Solaris_Process
// ==================================================================
 
 [Provider("com.sun.wbem.solarisprovider.Solaris"),
  Description ("A Solaris process that is running.")
 ]
class Solaris_Process:CIM_Process
{
     [Description (
        "Time in user mode and kernel mode, in milliseconds."
        "If this information is not available, a value of 0 should be used."), 
       Units("MilliSeconds")
      ]
   uint64 UserKernelModeTime;
      [Description (
          "A string used to identify the Parent Process. A Process ID is a "
          "kind of Process Handle."),
       MaxLen (256)
      ]
   string ParentHandle;
};
[vellip]
// ==================================================================
// Solaris_FileSystem
// ==================================================================
 
 [Provider("com.sun.wbem.solarisprovider.Solaris"),
  Description ("A Solaris FileSystem.")
 ]
class Solaris_FileSystem:CIM_FileSystem
{
};
 

次の例は、デフォルトオプションを使って Solaris_System1.0.mof ファイルを再コンパイルしたものです。このオプションは、コンパイラが、すでにあるクラスを追加しようとするたびにエラーを返します。この例では、詳細モード (-v) を使用しています。さらに、デフォルトのネームスペース root¥cimv2 への書き込み権が必要なため、スーパーユーザーアカウントを指定します。Solaris_System1.0.mof ファイルに定義されている CIM 要素は、デフォルトで root¥cimv2 ネームスペースに追加されます。


例 4-2 デフォルトオプションを使用した MOF ファイルのコンパイル

mofcomp -v -u root ../mof/Solaris_Schema1.0.mof
Starting MOF Compiler
java com.sun.wbem.compiler.mofc.CIM_Mofc -v -u root ../mof/Solaris_Schema1.0.mof
Enter password:******
Adding class Solaris_ComputerSystem
Warning at line 27 in file /usr/sadm/mof/Solaris_Core1.0.mof 
- compilation proceeding ...
Semantic Error: 
The following exception was thrown by setClass: 
		CIM_ERR_ALREADY_EXISTS:Element Solaris_ComputerSystem already exists.
Adding class Solaris_SerialPortSetting
Warning at line 39 in file /usr/sadm/mof/Solaris_Core1.0.mof 
- compilation proceeding ...
Semantic Error: 
The following exception was thrown by setClass: 
		CIM_ERR_ALREADY_EXISTS:Element Solaris_SerialPortSetting already exists.
Adding class Solaris_LogRecord
Warning at line 104 in file /usr/sadm/mof/Solaris_Core1.0.mof 
- compilation proceeding ...
[vellip]
Semantic Error: 
The following exception was thrown by setClass: 
		CIM_ERR_ALREADY_EXISTS:Element Solaris_NamespaceAcl already exists.
Adding class Solaris_UserAcl
Warning at line 39 in file /usr/sadm/mof/Solaris_Acl1.0.mof 
- compilation proceeding ...
Semantic Error: 
The following exception was thrown by setClass: 
		CIM_ERR_ALREADY_EXISTS:Element Solaris_UserAcl already exists.
Compilation succeeded.
 

セキュリティ上の注意

-p パラメータを使ってコマンドをパスワードを指定して実行すると、指定したパスワードを他のユーザーが ps コマンドや history コマンドを使って知ることができます。


注 -

実行するコマンドにパスワードを指定する場合は、コマンドを実行した後でただちにパスワードを変更してください。



例 4-3 セキュリティ上安全でない構文の例

次の例は、-p パラメータを使って mofcomp コマンドを実行する例です。

mofcomp -p Log8Rif
次の例は、-u および -p パラメータを使って mofcomp コマンドを実行する例です。
mofcomp -u molly -p Log8Rif

パスワードを指定するオプションを使って modcomp コマンドを実行したら、ただちにパスワードを変更してください。