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 数を決定することを意味します。 たとえば Microsoft Office など、製品が大きい場合があります。 各製品を検出するのに必要なスクリプトが大きい場合は、1 つのサブ製品に対して複数のスクリプトを計画します。 これらのスクリプトは、すべてのタスクを実行する大規模なスクリプトよりも保守が簡単です。 たとえば 7-Zip など、製品が小さい場合には単一のスクリプトで十分です。
最後に、検出方法を決定します。 Intellisig は、何がインストールされているか検出するために、システム上のリソースを検査する必要があります。 これは、特定のファイル、レジストリ キー、設定ファイル、および設定を検索することを意味します。 Intellisig は、必要に応じてインテリジェントになることができます。 1 つのレベルで、従来のシグネチャをエミュレートすること、および特定の情報を検索することができます。 別のレベルでは、Intellisig が製品を認識していない場合であっても、コンピュータを分析して、すべての製造元から可能性のあるすべての製品を検出できます(ヒューリスティック スキャンに類似)。 Intellisig は、これらの 2 つのレベル間で動作できることが理想的です。 少なくとも、過去と将来を含めて、製品のすべてのバージョンおよび構成を検出できることを確認します(特定の既存のバージョンではなく)。
カスタム 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>
Intellisig の UUID を指定します。 この ID は、Intellisig コマンド ライン ツール(intellisigcmd.exe genuuid)を使用して生成できます。
Intellisig スクリプト ファイルの名前を指定します。
スクリプトが必要とするオプションのファイルのリストを指定します。
オプションのトリガを定義します。
Intellisig スクリプトを記述するためには、dmscript を使用してプログラムを記述する方法を基本的に理解していることが前提条件となります。
注: dmscript 言語の詳細については、ITCM_DMSScriptingLanguage_Ref_ENU.pdf を参照してください。
Intellisig スクリプトは以下タスクを実行します。
Windows では、dmsedit ユーティリティを使用してスクリプトを開発できます。 このユーティリティは、スクリプトを開発し実行するための統合エディタおよびデバッガです。 この方法により、ブレーク ポイント、コードのステップ実行、変数の検査など、すべての標準デバッグ機能が提供されます。
重要: スクリプトは対話式ではないので、Windows 上で印刷ステートメントを使用しないでください。 Windows では、結果は、スクロール不可能なダイアログ ボックスに 10 秒間のみ表示されます。 UNIX では、出力は stdout です。
スクリプトの開発には、テキスト エディタとコマンド ライン ウィンドウを使用します。 dmstrace 機能を使用して、トレース ログに診断情報を出力できます。
dmscript 言語は、機能を実行するスクリプトを組み込む #include ディレクティブをサポートします。 Intellisig を作成するためのベスト プラクティスに従って、以下の方法でスクリプトを記述することを推奨します。
例:
補助ファイル windows.dms は、関数 DetectWindows(…) を定義します。
補助ファイル office.dms は、関数 DetectOffice(…) を定義します。
補助ファイル sql.dms は、関数 DetectSql(…) を定義します。
メイン スクリプト main.dms は、以下のように表示されます。
#include windows.dms #include office.dms #include sql.dms
args の解析と OpenDetectedSoftwareOutputFiles の呼び出しを実行し、別の初期化タスクを実行する、main.dms に定義されている REM 関数を指定します。
windows.dms に定義されている REM 関数を指定します。
office.dms に定義されている REM 関数を指定します。
sql.dms に定義されている REM 関数を指定します。
CloseDetectedSoftwareOutputFiles の呼び出しを実行し、別のクリーンアップ タスクを実行する、main.dms に定義されている REM 関数を指定します。
作成する Intellisig のヘルプを記述し、個別の Web ページに詳細を追加できます。 詳細なヘルプにより、Intellisig ユーザは、Intellisig をさらに深く理解できます。 ヘルプは、DSM エクスプローラ内の Intellisig プロパティ ページに表示されます。
次の手順に従ってください:
Web ページに、Intellisig に関する追加情報が表示されます。
ヘルプ ファイルをホストした後、デフォルト設定ポリシー内に URL を設定します。
ヘルプ ファイルは、HTML ファイル名、および設定した URL に基づいて対応する Intellisig と関連付けられます。 Intellisig のテスト時にヘルプもテストできます。
注: caIntellisigsURL パラメータは、CA が提供する Intellisig に関するヘルプ ファイルの詳細を指定します。
スキャナは、以下の引数で、スクリプト ファイルと同じディレクトリ内の dmscript を起動します。
dmscript <scriptfile> -I <uuid of Intellisig> -v <version of Intellisig> -n <name of Intellisig> -t <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…
以下の関数を使用します。
レジストリを読み取ります
値を読み取ります
キーを列挙します
変数を列挙します
キーを閉じます
注: 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 を呼び出します。
リリースする前に、少数のコンピュータ上でスクリプトをオフラインでテストします。 テストすることにより、組織内のすべてのコンピュータ上で適用する前に、スクリプトを修正できます。 コマンド ラインからスクリプトを実行し、次に結果として以下のファイルを検査します。
テストでは、コマンド ラインに UUID を指定する必要はありません。 出力ファイルに名前を付ける場合、任意の文字列が有効であり、使用できます。 UUID は、エージェントにのみ必要であり、この文字列を使用して名前を付けられたファイルを検索します。 UUID の使用が推奨されています。
検出対象のコンピュータ、オペレーティング システム、およびソフトウェアがインストールされており、利用可能であることを確認します。 それ以外の場合には、通常存在する適切なファイル、レジストリ、および設定エントリを作成することにより、インストールされているソフトウェアをシミュレートします。 ベンダーからの体験版を取得できます。
すべてのターゲット オペレーティング システム上のスクリプトをテストすることを確認します。
2 番目のテスト レベルでは、予備のコンピュータまたは仮想マシンを使用して、小さな DSM の環境を作成します。 これらのコンピュータのうち、1 台のコンピュータ上に MDB、ドメイン マネージャ、およびスケーラビリティ サーバが存在する必要があり、また Asset Management エージェントがターゲット オペレーティング システムの 1 つにインストールされている必要があります。 DSM エクスプローラを使用して Intellisig をインポートし、Intellisig ベースのソフトウェア検出タスクを実行します。 予期された結果が表示されることを確認します。
Client Automation が作成する Intellisig は、コンテンツ ダウンロード ジョブを使用して顧客に配信されます。 カスタム作成された Intellisig の場合は、DSM エクスプローラを使用してテスト マネージャからエクスポートし、次に実稼働企業またはドメイン マネージャにインポートします。
|
Copyright © 2014 CA Technologies.
All rights reserved.
|
|