前のトピック: カスタム Intellisig の作成次のトピック: Intellisig トリガ


Intellisig およびフォルダ構造の例

2 つの Intellisig のサンプルが、DSM path\Intellisigs フォルダに提供されています。

Sample.xml には、ユーザの MDB にこれらのサンプルをインポートするためのメタデータが含まれます。 Intellisig ディレクトリで、以下のコマンドを実行します。

intellisigcmd import file=sample.xml

サンプル Intellisig は、それぞれ以下のフォルダ構造を持ちます。

uuid of intellisig\version id\scriptfile.dms

注: 同じ場所に、任意の追加の Intellisig データ ファイルを配置します。

トップに戻る

関連項目:

Intellisig のエクスポート

Intellisig のインポート

ソフトウェア識別情報の分析

従来のシグネチャの場合と同様に、スクリプトとその出力を反映する必要があるため、製品構成を決定します。 以下を決定します。

製品構成と命名規則を決定した後に、Intellisig の精度を決めます。 これは、製品を網羅するのに必要な個別の Intellisig 数を決定することを意味します。 たとえば Microsoft Office など、製品が大きい場合があります。 各製品を検出するのに必要なスクリプトが大きい場合は、1 つのサブ製品に対して複数のスクリプトを計画します。 これらのスクリプトは、すべてのタスクを実行する大規模なスクリプトよりも保守が簡単です。 たとえば 7-Zip など、製品が小さい場合には単一のスクリプトで十分です。

最後に、検出方法を決定します。 Intellisig は、何がインストールされているか検出するために、システム上のリソースを検査する必要があります。 これは、特定のファイル、レジストリ キー、設定ファイル、および設定を検索することを意味します。 Intellisig は、必要に応じてインテリジェントになることができます。 1 つのレベルで、従来のシグネチャをエミュレートすること、および特定の情報を検索することができます。 別のレベルでは、Intellisig が製品を認識していない場合であっても、コンピュータを分析して、すべての製造元から可能性のあるすべての製品を検出できます(ヒューリスティック スキャンに類似)。 Intellisig は、これらの 2 つのレベル間で動作できることが理想的です。 少なくとも、過去と将来を含めて、製品のすべてのバージョンおよび構成を検出できることを確認します(特定の既存のバージョンではなく)。

トップに戻る

ユーザの Intellisig の書き込み

カスタム Intellisig は、メタデータ ファイルおよびスクリプトを必要とします。 ファイルは、特定のフォルダ構造に存在する必要があります。 サンプル Intellisig スクリプトおよびフォルダ構造については、「Intellisig およびフォルダ構造の例」を参照してください。

メタデータ ファイルの書き込み

メタデータ ファイルは、Intellisig に関する情報を含む .xml ファイルです。 ドメイン マネージャおよびソフトウェア スキャン エージェントは、このファイルを使用して 1 単位としてそれを管理します。 また、このファイルには、トリガの定義が含まれます。 エージェントは、これらのルールを評価して、エージェントのランタイムを最小化するためにスクリプトを実行するかどうかを決定します。

例:

<eso_fingerprints version="1.0.0">
    <preferences>
        <ignore dllcache="true" />
        <ignore spuninstall="true" />
        <ignore internetcache="true" />
        <ignore cookies="true" />
        <ignore nortontrash="true" />
        <ignore sysbackup="true" />
        <ignore SDLib="true" />
    </preferences>
    <technologies dateupdateint="1320340565" dateupdate="05/12/11 11:28:05" >
        <technology id="11111111-B1B1-BBBB-1111-BBBB11110000"
                       name="Trigger Test Unix Single File And" version="1.0.0"
                    descr="Intellisig only run if file trigger detected (trigger_file.txt)"
                    swtype="17" srctype="6" iscript="intellisig-trigger-test.dms" os="Unix">
              <additional_files>
                  <data name="Trigger_Test_Unix.txt"/>
                  <data name="Trigger_Test2_Unix.txt"/>
              </additional_files>
              <group type="and">
                  <file name="trigger_file.txt" path="*" />
              </group>

</technology>

    </technologies>
</eso_fingerprints>
ID

Intellisig の UUID を指定します。 この ID は、Intellisig コマンド ライン ツール(intellisigcmd.exe genuuid)を使用して生成できます。

iscript

Intellisig スクリプト ファイルの名前を指定します。

Additional_files

スクリプトが必要とするオプションのファイルのリストを指定します。

Group

オプションのトリガを定義します。

トップに戻る

スクリプトの記述

Intellisig スクリプトを記述するためには、dmscript を使用してプログラムを記述する方法を基本的に理解していることが前提条件となります。

注: dmscript 言語の詳細については、ITCM_DMSScriptingLanguage_Ref_ENU.pdf を参照してください。

Intellisig スクリプトは以下タスクを実行します。

Windows では、dmsedit ユーティリティを使用してスクリプトを開発できます。 このユーティリティは、スクリプトを開発し実行するための統合エディタおよびデバッガです。 この方法により、ブレーク ポイント、コードのステップ実行、変数の検査など、すべての標準デバッグ機能が提供されます。

重要: スクリプトは対話式ではないので、Windows 上で印刷ステートメントを使用しないでください。 Windows では、結果は、スクロール不可能なダイアログ ボックスに 10 秒間のみ表示されます。 UNIX では、出力は stdout です。

スクリプトの開発には、テキスト エディタとコマンド ライン ウィンドウを使用します。 dmstrace 機能を使用して、トレース ログに診断情報を出力できます。

トップに戻る

複数の製品を検出するスクリプトの記述

dmscript 言語は、機能を実行するスクリプトを組み込む #include ディレクティブをサポートします。 Intellisig を作成するためのベスト プラクティスに従って、以下の方法でスクリプトを記述することを推奨します。

  1. 検出する各製品に対するスクリプトを記述し、各スクリプトを補助ファイルとして Intellisig 定義に追加します。 これらのスクリプトは、検出を実行し、また検出された製品、リリース、パッチ、および検出されたインスタンスの登録を実行します。 これらのスクリプトが Intellisig の初期化または終了コードを実行しないことを確認します。
  2. Intellisig の開始と終了を実行するメイン スクリプトを記述して、Intellisig 定義に追加します。 メイン スクリプトで #include ディレクティブを使用して補助ファイルをインクルードし、記述されている検出機能をメイン スクリプトの実行の一部として実行します。

例:

補助ファイル windows.dms は、関数 DetectWindows(…) を定義します。

補助ファイル office.dms は、関数 DetectOffice(…) を定義します。

補助ファイル sql.dms は、関数 DetectSql(…) を定義します。

メイン スクリプト main.dms は、以下のように表示されます。

#include windows.dms
#include office.dms
#include sql.dms

DoInitialization(…)

args の解析と OpenDetectedSoftwareOutputFiles の呼び出しを実行し、別の初期化タスクを実行する、main.dms に定義されている REM 関数を指定します。

DetectWindows(…)

windows.dms に定義されている REM 関数を指定します。

DetectOffice(…)

office.dms に定義されている REM 関数を指定します。

DetectSql(…)

sql.dms に定義されている REM 関数を指定します。

DoFinalization(…)

CloseDetectedSoftwareOutputFiles の呼び出しを実行し、別のクリーンアップ タスクを実行する、main.dms に定義されている REM 関数を指定します。

トップに戻る

カスタム Intellisig のヘルプの記述

作成する Intellisig のヘルプを記述し、個別の Web ページに詳細を追加できます。 詳細なヘルプにより、Intellisig ユーザは、Intellisig をさらに深く理解できます。 ヘルプは、DSM エクスプローラ内の Intellisig プロパティ ページに表示されます。

次の手順に従ってください:

  1. CA が提供する Intellisig の 1 つに関するヘルプ ファイルを表示します。
    1. DSM エクスプローラを開き、[ソフトウェア]-[定義]に移動します。
    2. CA が提供する Intellisig を右クリックし、[プロパティ]をクリックします。
    3. [Intellisig プロパティ]ダイアログ ボックスで[詳細]タブをクリックします。
    4. [?]ボタンをクリックします。

      Web ページに、Intellisig に関する追加情報が表示されます。

  2. CA が提供する Intellisig に基づいて、カスタム Intellisig の .html ヘルプ ファイルを作成します。
  3. ファイル名として Intellisig 名を持つヘルプ ファイルを保存します。
  4. Web サーバ上でヘルプ ファイルをホストします。

    ヘルプ ファイルをホストした後、デフォルト設定ポリシー内に URL を設定します。

  5. [コントロール パネル]-[設定]-[設定ポリシー]に移動します。 デフォルト ポリシーを封印解除します。
  6. [DSM]-[管理コンソール]に移動します。
  7. [customIntellisigsURL]パラメータをダブルクリックし、[プロパティの設定]ダイアログ ボックスで値に「c:\webinfo\%name%.html」を指定します。

    ヘルプ ファイルは、HTML ファイル名、および設定した URL に基づいて対応する Intellisig と関連付けられます。 Intellisig のテスト時にヘルプもテストできます。

    注: caIntellisigsURL パラメータは、CA が提供する Intellisig に関するヘルプ ファイルの詳細を指定します。

  8. カスタム Intellisig に対して手順 1 を繰り返し、対応するヘルプ ファイルを表示します。

トップに戻る

初期化

スキャナは、以下の引数で、スクリプト ファイルと同じディレクトリ内の dmscript を起動します。

dmscript <scriptfile> -I <uuid of Intellisig> -v <version of Intellisig> -n <name of Intellisig>  -t <trigger_info>
trigger_info

Intellisig を実行するトリガに関する情報を含むオプションの文字列を指定します。 必要な場合、スクリプトは、その検出プロセスでヒントとしてこの文字列を使用できます。

スクリプトは、これらの引数を収集して存在することを確認し、欠落している場合には、エラーを報告して終了します。 引数の値は argv 関数から使用可能です。

例:

dim sUuid as string
dim sISVersion as String
dim sISName as String
dim X as Integer 
for X=0 to argc()
    if ( argv(X)="-i") then
        sUuid = argv(X+1)
    endif
    if ( argv(X)="-v") then
        sISVersion=argv(X+1)
    endif
    if ( argv(X)="-n") then
        sISName = argv(X+1)
    endif
next X
if sUuid = "" then
    LogDetectedSoftwareError ("00404","Param1=missing argument uuid to script ")
    exit
endif
トレースとレポートのエラー

dmscript は、ログ ファイル TRC_DMSCRIPTINTERPRETER_0.log にトレース情報を出力する手段を提供します。 ログ ファイルは、Intellisig の開発中のデバッグとリリース後のトラブルシューティングに役立ちます。

LogDetectedSoftwareError 関数を使用して、管理者にエラーをレポートします。 この関数は、<uuid>.err という名前のファイルに、標準形式でエラーを書き込みます。 このファイルは、ドメイン マネージャに自動的にアップロードされます。 エラーもトレース ログ ファイルにコピーされます。 DSM エクスプローラは、メッセージをローカル言語に変換した後、ジョブ ステータス ダイアログ ボックスに表示します。

注: この機能に従うと、英語テキストを直接指定することになりますが、ローカライズされたエラー メッセージを使用してください。 必要な場合には、マネージャまたはエクスプローラ上で statmod.<lang> ファイルを編集して、自分のメッセージを追加します。

トップに戻る

出力ファイルの作成

OpenDetectedSoftwareOutputFiles 関数を使用して、出力ファイルを開きます。

例:

if OpenDetectedSoftwareOutputFiles (sUuid,sISVersion,sISName) <> CASWDETECT_OK then
    exit
endif

この関数は、<uuid>.xml という名前のファイルを作成して結果を格納します。

アイテムの検索

項目の検索は、製品の詳細に左右されます。 以下の関数を使用できます。

ファイルとディレクトリの検出

ファイルが存在するかどうか検出するには、ExistFile 関数を使用します。 ディレクトリを検出するには、ExistDirectory 関数を使用します。

例:

ProgramFiles = EnvGetString(“ProgramFiles”)
if ExistDirectory (ProgramFiles + “\Microsoft Office”) then
…found MS Office…
if ExistFile (ProgramFiles + “\Microsoft Office\Office14\EXCEL.EXE") then
… found excel…
レジストリの読み取り

以下の関数を使用します。

RegOpenKey

レジストリを読み取ります

RegQueryValue

値を読み取ります

RegEnumKeys

キーを列挙します

RegEnumVariable

変数を列挙します

RegCloseKey

キーを閉じます

注: dmscript は 32 ビットのプログラムです。したがって、Windows は、HKLM\SOFTWARE などの特定キーにレジストリのリダイレクトを適用します。 64 ビット プログラム用に予約されたレジストリの一部を読み取るには、setmode64(1) を呼び出します。 このアクションにより、リダイレクトがオフになります。 また、この関数は、\windows\system32 など、ファイル システムの特定部分に適用されます。

環境を読み取り

Windows または UNIX 上の環境変数の内容を読み取るには、EnvGetString 関数を使用します。

例:

path = EnvGetString(“PATH”)
…now search the path for a target directory..

また、EnvGetFirst 関数と EnvGetNext 関数を使用して、環境変数をすべて列挙できます。

設定ファイルの読み取り

以下の関数を使用します。

注: カスタム バイナリは、Intellsig 定義に含めることができません。

トップに戻る

プログラムの実行

dmscript は、いくつかのタスクを実行できない場合があります。また、タスクによっては、既存のシェル スクリプトや外部プログラムを実行する方が単純な場合があります。 そのような場合には、Execute 関数を使用します。

例:

Windows 上のシステム バージョンを取得するには、以下のコマンドを使用します。

Execute ("cmd.exe /c ver > dms.tmp”, True, 0)

出力は dms.tmp で利用可能です。

インストールされたプログラム リストの読み取り

Windows で、Microsoft(SysInternals)から、以下のいずれかのコマンドを実行します。

wmic product
psinfo -accepteula -s

ファイルへの出力をリダイレクトし、次にそれを読み取ります。

実行中のプログラムの検出

dmscript は、実行中のプログラムを直接検出できませんが、これらのプログラムを検出するシステム コマンドを発行して、次にそれらの出力を読み取ることができます。

例:

(Unix)
execute (“ps –ef | grep myprogram > /tmp/dms.tmp”) 
(Windows)
execute ("cmd.exe /c tasklist /nh /fi ""imagename eq powerpnt.exe"" > dms.tmp",true,0) 
…now read the contents of dms.tmp…
出力の作成

スクリプト内では、製品、リリース、パッチ、およびインスタンスが存在する階層に従う必要があります。

これは、最初に製品を指定し、続いてそのリリース、パッチ、およびインスタンスを指定する必要があることを意味します。 子の項目を作成するときには、親の名前とバージョンも指定する必要があります。 dmscript は、作成されている階層を記憶し、項目の親が存在し有効であることを確認します。 それ以外の場合には、エラーが返されます。 製品を作成するために、複数の特定の関数が存在します。 これらの関数は、以下の一般的な形式を持ちます。

CreateDetectedSoftwareXXXX (name, version, [parentname, parentversion,…] OptionalProperties)

製品の作成

製品を作成するには、以下のコードを使用します。

CreateDetectedSoftwareProduct (ProductName as String, 
                               ProductVersionLabel as String, 
                               OptionalProperties as String) as integer

例:

CreateDetectedSoftwareProduct("Microsoft Windows 7 Ultimate", “6.1”, "VersionNumber=6.1 | Language=en-us | Bitness=64 | Architecture=x64 | Manufacturer=Microsoft Corporation | Category=Operating Systems | Description=The Microsoft Windows 7 Product | ")

この例では、値は定義されています。しかし、実際のスクリプトで、それらは検出プロセスの一部として決定されます。

リリースの作成

製品のリリースを作成するには、以下のコードを使用します。

CreateDetectedSoftwareRelease (ProductName as String, 
                               ProductVersionLabel as String, 
                               ReleaseName as String, 
                               ReleaseVersionLabel as String, 
                               OptionalProperties as String) as integer

例:

CreateDetectedSoftwareRelease("Microsoft Windows 7 Ultimate", "6.1", "Microsoft Windows 7 Ultimate x64 64 en-us", "6.1.7600", "VersionNumber=6.1.7600 |Language=en-us | Bitness=64 |Architecture=x64 | Manufacturer=Microsoft Corporation | Category=Operating Systems | Description=The Microsoft Windows 7 Release | ")
パッチの作成

パッチを作成するには、以下のコードを使用します。

CreateDetectedSoftwarePatch (ProductName as String, 
                             ProductVersionLabel as String, 
                             ReleaseName as String, 
                             ReleaseVersionLabel as String, 
                             PatchName as String, 
                             PatchVersionLabel as String, 
                             OptionalProperties as String) as integer

例:

CreateDetectedSoftwarePatch("Microsoft Windows 7 Ultimate", "6.1", "Microsoft Windows 7 Ultimate x64 64 en-us", "6.1.7600", "KB971033 x64 64 en-us", "Language=en-us | Bitness=64 | Architecture=x64 | Manufacturer=Microsoft Corporation | Category=Operating Systems | Description=The Microsoft Windows 7 Activation Checker Update | ")

インスタンスの作成

インストールされたリリースのインスタンスを作成するには、以下のコードを使用します。

CreateDetectedSoftwareReleaseInstance (ProductName as String, 
                                       ProductVersionLabel as String, 
                                       ReleaseName as String, 
                                       ReleaseVersionLabel as String,                          
                                       OptionalProperties as String) as integer

インストールされたパッチのインスタンスを作成するには、以下のコードを使用します。

CreateDetectedSoftwarePatchInstance (ProductName as String, 
                                     ProductVersionLabel as String, 
                                     ReleaseName as String, 
                                     ReleaseVersionLabel as String, 
                                     PatchName as String, 
                                     PatchVersionLabel as String, 
                                     OptionalProperties as String) as integer

例:

CreateDetectedSoftwareReleaseInstance("Microsoft Windows 7 Ultimate", "6.1", "Microsoft Windows 7 Ultimate x64 64 en-us", "6.1.7600", "Origin=Forward Inc | TrustLevel=5 | InstallPath=C:\Windows | SerialNumber=1234-567-890414-86668 | LastAccessed=2011-11-29T12:30 | ")
CreateDetectedSoftwarePatchInstance("Microsoft Windows 7 Ultimate", "6.1", "Microsoft Windows 7 Ultimate x64 64 en-us", "6.1.7600", "KB971033 x64 64 en-us", "", "Origin=Forward Inc | TrustLevel=5 | ")

注: ユーザの組織名を反映するために Origin パラメータ内の値を置換します。

トップに戻る

出力ファイルのクローズ

スクリプトで使用しているリソースを解放した後、CloseDetectedSoftwareOutputFiles を呼び出します。

Intellisig のテスト

リリースする前に、少数のコンピュータ上でスクリプトをオフラインでテストします。 テストすることにより、組織内のすべてのコンピュータ上で適用する前に、スクリプトを修正できます。 コマンド ラインからスクリプトを実行し、次に結果として以下のファイルを検査します。

テストでは、コマンド ラインに UUID を指定する必要はありません。 出力ファイルに名前を付ける場合、任意の文字列が有効であり、使用できます。 UUID は、エージェントにのみ必要であり、この文字列を使用して名前を付けられたファイルを検索します。 UUID の使用が推奨されています。

検出対象のコンピュータ、オペレーティング システム、およびソフトウェアがインストールされており、利用可能であることを確認します。 それ以外の場合には、通常存在する適切なファイル、レジストリ、および設定エントリを作成することにより、インストールされているソフトウェアをシミュレートします。 ベンダーからの体験版を取得できます。

すべてのターゲット オペレーティング システム上のスクリプトをテストすることを確認します。

2 番目のテスト レベルでは、予備のコンピュータまたは仮想マシンを使用して、小さな DSM の環境を作成します。 これらのコンピュータのうち、1 台のコンピュータ上に MDB、ドメイン マネージャ、およびスケーラビリティ サーバが存在する必要があり、また Asset Management エージェントがターゲット オペレーティング システムの 1 つにインストールされている必要があります。 DSM エクスプローラを使用して Intellisig をインポートし、Intellisig ベースのソフトウェア検出タスクを実行します。 予期された結果が表示されることを確認します。

トップに戻る

Intellisig のリリース

Client Automation が作成する Intellisig は、コンテンツ ダウンロード ジョブを使用して顧客に配信されます。 カスタム作成された Intellisig の場合は、DSM エクスプローラを使用してテスト マネージャからエクスポートし、次に実稼働企業またはドメイン マネージャにインポートします。

関連項目:

Intellisig のエクスポート

Intellisig のインポート