Zwei Beispiel-Intellisigs werden im Ordner DSM-Pfad\Intellisigs angeboten.
Sample.xml enthält die Metadaten, um diese Beispiele in Ihre MDB zu importieren. Führen Sie den folgenden Befehl im Intellisigs-Verzeichnis aus:
intellisigcmd import file=sample.xml
Jeder Beispiel-Intellisig hat die folgende Ordnerstruktur:
uuid von intellisig\versions-id\scriptfile.dms
Hinweis: Platzieren Sie zusätzliche Intellisig-Datendateien am gleichen Speicherort.
Bestimmen Sie wie bei herkömmlichen Signaturen die Produktstruktur, weil diese im Skript und seiner Ausgabe widergespiegelt werden muss. Bestimmen Sie Folgendes:
Nachdem Sie die Produktstruktur und die Namenskonvention bestimmt haben, entscheiden Sie über die Genauigkeit des Intellisigs. Dazu legen Sie fest, wie viele separate Intellisigs Sie brauchen, um das Produkt abzudecken. Das Produkt kann groß sein, zum Beispiel Microsoft Office. Wenn das Skript, das benötigt wird, um jedes Produkt zu erkennen, groß ist, planen Sie mehrere Skripte pro Nebenprodukt. Diese Skripte sind leichter zu verwalten als ein großes Skript, das alle Tasks ausführt. Wenn das Produkt klein ist, zum Beispiel 7-zip, genügt ein einzelnes Skript.
Bestimmen Sie schließlich die Erkennungsmethode. Ein Intellisig muss Ressourcen auf dem System prüfen, um zu entdecken, was installiert wird. Das bedeutet, nach bestimmten Dateien, Registrierungsschlüsseln, Konfigurationsdateien und Einstellungen zu suchen. Ein Intellisig kann so intelligent wie erforderlich sein. Auf einer Ebene kann es eine herkömmliche Signatur emulieren und bestimmte Informationen suchen. Auf einer anderen Ebene kann es den Computer analysieren und alle möglichen Produkte von allen Herstellern entdecken, auch wenn diese Produkte dem Intellisig unbekannt sind (einem heuristischen Scan ähnlich). Ein idealer Intellisig kann zwischen diesen zwei Ebenen funktionieren. Überprüfen Sie zumindest, dass jede Version und Konfiguration eines Produkts, einschließlich früherer und künftiger, erkannt werden können (im Gegensatz zu bestimmten vorhandenen Versionen).
Ein benutzerdefinierter Intellisig benötigt eine Metadatendatei und ein Skript. Die Dateien müssen in einer bestimmten Ordnerstruktur vorliegen. Ein Beispiel für ein Intellisig-Skript und die Ordnerstruktur finden Sie unter Beispiel-Intellisigs und die Ordnerstruktur.
Die Metadatendatei ist eine .xml-Datei, die Informationen zum Intellisig enthält. Der Domänen-Manager und der Software-Scan-Agent verwenden diese Datei zur Verwaltung als eine Einheit. Diese Datei enthält auch Definitionen der Auslöser. Der Agent wertet diese Regeln aus, um zu entscheiden, ob er das Skript ausführen soll, um die Laufzeit des Agenten zu minimieren.
Beispiel:
<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 nur ausführen, wenn Auslöser gefunden wurde (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>
Gibt die UUID des Intellisigs an. Diese ID kann mithilfe des Intellisig-Befehlszeilen-Tools, intellisigcmd.exe genuuid, generiert werden.
Gibt den Namen der Intellisig-Skriptdatei an.
Gibt eine Liste von optionalen Dateien an, die das Skript benötigt.
Definiert einen optionalen Auslöser.
Ein grundlegendes Verständnis für das Schreiben von Programmen mithilfe von dmscript ist eine Voraussetzung für das Schreiben des Intellisig-Skripts.
Hinweis: Weitere Informationen zur dmscript-Sprache finden Sie unter ITCM_DMSScriptingLanguage_Ref_ENU.pdf.
Ein Intellisig-Skript führt die folgenden Tasks aus:
Unter Windows können Sie das dmsedit-Hilfsprogramm verwenden, um das Skript zu entwickeln. Dieses Hilfsprogramm ist ein integrierter Editor und Debugger zum Entwickeln und Ausführen von Skripten. Diese Methode stellt alle regulären Debugging-Funktionen wie Haltepunkte, schrittweise Codeausführung und Prüfung von Variablen bereit.
Wichtig! Verwenden Sie nicht die Druckanweisung unter Windows, weil das Skript nicht interaktiv ist. Unter Windows wird das Ergebnis in einem nicht scrollbaren Dialogfeld nur 10 Sekunden lang angezeigt. Unter UNIX ist die Ausgabe stdout.
Verwenden Sie einen Texteditor und ein Befehlszeilenfenster, um das Skript zu entwickeln. Sie können die dmstrace-Funktion verwenden, um Diagnoseinformationen zum Verfolgungsprotokoll auszugeben.
Die dmscript-Sprache unterstützt die #include-Direktive, die Sie Skripte aufnehmen lässt, um Funktionen auszuführen. In Übereinstimmungen mit den Best Practices für das Erstellen von Intellisigs empfehlen wir die folgende Vorgehensweise beim Schreiben von Skripten:
Beispiel:
Die Hilfsdatei windows.dms definiert die Funktion DetectWindows(…).
Die Hilfsdatei office.dms definiert die Funktion DetectOffice(…).
Die Hilfsdatei sql.dms definiert die Funktion DetectSql(…).
Das Hauptskript main.dms wird folgendermaßen angezeigt:
#include windows.dms #include office.dms #include sql.dms
Gibt die in main.dms definierte REM-Funktion an, die args analysiert und OpenDetectedSoftwareOutputFiles aufruft sowie andere Initialisierungstasks ausführt.
Gibt die in windows.dms definierte REM-Funktion an.
Gibt die in office.dms definierte REM-Funktion an.
Gibt die in sql.dms definierte REM-Funktion an.
Gibt die in main.dms definierte REM-Funktion an, die CloseDetectedSoftwareOutputFiles aufruft und andere Bereinigungstasks ausführt.
Sie können eine Hilfe für die Intellisigs schreiben, die Sie erstellen, und zusätzliche Details auf einer separaten Webseite angeben. Die Details helfen den Intellisig-Benutzern, mehr über das Intellisig zu erfahren. Die Hilfe wird auf der Intellisig-Eigenschaftsseite im DSM-Explorer angezeigt.
Gehen Sie wie folgt vor:
Eine Webseite zeigt Zusatzinformationen über das Intellisig an.
Nachdem Sie die Hilfedateien gehostet haben, konfigurieren Sie die URL in der Standardkonfigurationsrichtlinie.
Die Hilfedatei wird dem entsprechenden Intellisig basierend auf dem von Ihnen konfigurierten HTML-Dateinamen und der URL zugeordnet. Wenn Sie das Intellisig testen, können Sie auch die Hilfe testen.
Hinweis: Der caIntellisigsURL-Parameter gibt die Hilfedateidetails für die von CA zur Verfügung gestellten Intellisigs an.
Der Scanner startet dmscript im gleichen Verzeichnis wie die Skriptdatei mit den folgenden Argumenten:
dmscript <Skriptdatei> -I <uuid von Intellisig> -v <Version von Intellisig> -n <Name von Intellisig> -t <trigger_info>
Gibt eine optionale Zeichenfolge an, die Informationen zu dem Auslöser enthält, der das Intellisig ausführt. Ein Skript kann im Bedarfsfall diese Zeichenfolge als Hinweise in seinem Erkennungsprozess verwenden.
Ein Skript muss diese Argumente erfassen und überprüfen, dass sie vorhanden sind, und falls sie fehlen, den Fehler melden und dann beenden. Die Werte von Argumenten sind von der argv-Funktion verfügbar.
Beispiel:
dim sUuid als String
dim sISVersion als String
dim sISName als String
dim X als 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 bietet eine Möglichkeit, Verfolgungsinformationen in die Protokolldatei TRC_DMSCRIPTINTERPRETER_0.log auszugeben. Die Protokolldatei ist nützlich für das Debugging während der Entwicklung und die Fehlerbehebung nach der Veröffentlichung des Intellisigs.
Verwenden Sie die LogDetectedSoftwareError-Funktion, um dem Manager Fehler zu melden. Diese Funktion speichert Fehler in einem standardmäßigen Format in einer Datei namens <uuid>.err ab. Diese Datei wird automatisch auf den Domänen-Manager hochgeladen. Fehler werden auch in die Verfolgungsprotokolldatei kopiert. DSM-Explorer zeigt die Meldungen im Jobstatusdialogfeld an, nachdem er die Meldungen in die lokale Sprache konvertiert hat.
Hinweis: Obwohl Sie mit dieser Funktion englischen Text direkt angeben können, verwenden Sie lokalisierte Fehlermeldungen. Wenn erforderlich, bearbeiten Sie die statmod.<lang>-Datei im Manager oder im Explorer, um Ihre eigenen Meldungen hinzuzufügen.
Öffnen Sie die Ausgabedatei mithilfe der OpenDetectedSoftwareOutputFiles-Funktion.
Beispiel:
if OpenDetectedSoftwareOutputFiles (sUuid,sISVersion,sISName) <> CASWDETECT_OK then
exit
endif
Diese Funktion erstellt eine Datei namens <uuid>.xml, welche die Ergebnisse enthält.
Die Suche nach Elementen hängt von den Details des Produkts ab. Sie können folgende Funktionen verwenden:
Um zu erkennen, ob eine Datei vorhanden ist, verwenden Sie die ExistFile-Funktion. Um ein Verzeichnis zu finden, verwenden Sie die ExistDirectory-Funktion.
Beispiel:
ProgramFiles = EnvGetString(“ProgramFiles”) if ExistDirectory (ProgramFiles + "\Microsoft Office") then …MS Office gefunden… if ExistFile (ProgramFiles + "\Microsoft Office\Office14\EXCEL.EXE") then … Excel gefunden…
Verwenden Sie folgende Funktionen:
Liest die Registrierung
Liest einen Wert
Listet die Schlüssel auf
Listet die Variablen auf
Schließt einen Schlüssel
Hinweis: dmscript ist ein 32-Bit-Programm, daher wendet Windows Registrierungsumleitung auf bestimmte Schlüssel wie HKLM\SOFTWARE an. Um die Teile der Registrierung zu lesen, die für 64-Bit-Programme reserviert ist, rufen Sie setmode64(1) auf. Diese Aktion stellt die Umleitung ab. Diese Funktion bezieht sich auch auf bestimmte Teile des Dateisystems wie \windows\system32.
Um den Inhalt einer Umgebungsvariable unter Windows oder UNIX zu lesen, verwenden Sie die EnvGetString-Funktion.
Beispiel:
path = EnvGetString("PATH")
...jetzt den Pfad nach einem Zielverzeichnis durchsuchen..
Sie können auch alle Umgebungsvariablen mithilfe der Funktionen EnvGetFirst und EnvGetNext auflisten.
Verwenden Sie folgende Funktionen:
Hinweis: Die benutzerdefinierte Binärdatei kann nicht in die Intellsig-Definition eingeschlossen werden.
Es ist möglich, dass dmscript einige Tasks nicht erfüllen kann oder dass es Tasks gibt, bei denen es einfacher ist, ein vorhandenes Shell-Skript oder ein externes Programm auszuführen. Verwenden Sie in solchen Fällen die Execute-Funktion.
Beispiel:
Um die Systemversion unter Windows abzurufen, verwenden Sie den folgenden Befehl:
Execute ("cmd.exe /c ver > dms.tmp”, True, 0)
Die Ausgabe ist in dms.tmp verfügbar.
Führen Sie unter Windows einen der folgenden Befehle von Microsoft SysInternals aus:
wmic product psinfo -accepteula -s
Leiten Sie die Ausgabe an eine Datei um, und lesen Sie sie dann.
Dmscript kann ausgeführte Programmen nicht direkt erkennen, kann aber Systembefehle hervorbringen, die diese Programme erkennen und dann ihre Ausgabe lesen.
Beispiel:
(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)
...jetzt die Inhalte von dms.tmp lesen…
Produkte, Versionen, Patches und Instanzen sind in einer Hierarchie vorhanden, der Sie in einem Skript folgen müssen:
Das heißt, dass Sie zuerst ein Produkt angeben müssen, gefolgt von seinen Versionen, Patches und Instanzen. Wenn man die untergeordneten Elemente erstellt, müssen auch der übergeordnete Name und Version angegeben werden. Dmscript erinnert sich an die erstellte Hierarchie und überprüft, ob die übergeordneten Elemente vorhanden sind und gültig sind. Wenn nicht, wird ein Fehler zurückgegeben. Es gibt eine Reihe von speziellen Funktionen für das Erstellen von Produkten. Diese Funktionen haben das folgende allgemeine Format:
CreateDetectedSoftwareXXXX (Name, Version [übergeordneter_Name, übergeordnete_Version,…], OptionaleEigenschaften)
Um ein Produkt zu erstellen, verwenden Sie den folgenden Code:
CreateDetectedSoftwareProduct (ProductName as String,
ProductVersionLabel as String,
OptionalProperties as String) as integer
Beispiel:
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 | ")
In diesem Beispiel werden die Werte definiert, aber in einem echten Skript werden sie als Teil des Erkennungsprozesses bestimmt.
Um eine Version eines Produkts zu erstellen, verwenden Sie den folgenden Code:
CreateDetectedSoftwareRelease (ProductName als String,
ProductVersionLabel as String,
ReleaseName als String,
ReleaseVersionLabel als String,
OptionalProperties as String) as integer
Beispiel:
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 | ")
Um einen Patch zu erstellen, verwenden Sie den folgenden Code:
CreateDetectedSoftwarePatch (ProductName als String,
ProductVersionLabel as String,
ReleaseName als String,
ReleaseVersionLabel als String,
PatchName als String,
PatchVersionLabel als String,
OptionalProperties as String) as integer
Beispiel:
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 | ")
Um eine installierte Instanz einer Version zu erstellen, verwenden Sie den folgenden Code:
CreateDetectedSoftwareReleaseInstance (ProductName als String,
ProductVersionLabel as String,
ReleaseName als String,
ReleaseVersionLabel als String,
OptionalProperties as String) as integer
So erstellen Sie eine installierte Patch-Instanz:
CreateDetectedSoftwarePatchInstance (ProductName als String,
ProductVersionLabel as String,
ReleaseName als String,
ReleaseVersionLabel als String,
PatchName als String,
PatchVersionLabel als String,
OptionalProperties as String) as integer
Beispiel:
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 | ")
Hinweis: Ersetzen Sie den Wert im Origin-Parameter durch den Namen Ihrer Organisation.
Nachdem Sie die Ressourcen freigegeben haben, die Ihr Skript verwendet, rufen Sie CloseDetectedSoftwareOutputFiles auf.
Testen Sie Ihr Skript offline auf einer kleinen Anzahl von Computern, bevor Sie es freigeben. Anhand von Tests können Sie das Skript korrigieren, bevor Sie es auf allen Computern in Ihrer Organisation anwenden. Sie können ein Skript von der Befehlszeile ausführen und dann die folgenden Dateien auf Ergebnisse prüfen:
Beim Testen müssen Sie keine UUID in der Befehlszeile angeben. Eine Zeichenfolge funktioniert und wird verwendet, um die Ausgabedateien zu benennen. Die UUID wird nur von dem Agenten benötigt, der nach Dateien sucht, die mithilfe dieser Zeichenfolge benannt werden. Es empfiehlt sich, dass Sie eine UUID verwenden.
Überprüfen Sie, dass Ihnen die Computer, Betriebssysteme und installierte Software, die Sie erkennen möchten, zur Verfügung stehen. Wenn nicht, simulieren Sie die installierte Software, indem Sie die entsprechende Datei, Registrierung und Konfigurationseingaben erstellen, die normalerweise vorhanden wären. Sie können Testversionen von den Anbietern erhalten.
Vergewissern Sie sich, dass Sie das Skript auf allen Zielbetriebssystemen testen.
Erstellen Sie für die zweite Testebene mithilfe von Ersatzcomputern oder virtuellen Rechnern eine kleine DSM-Umgebung. Diese Computer müssen eine MDB, einen Domänen-Manager und einen Scalability-Server auf einem Computer und den Asset Management-Agenten auf einem der Zielcomputer installiert haben. Importieren Sie das Intellisig mithilfe von DSM-Explorer, und führen Sie einen Intellisig-basierten Softwareerkennungstask aus. Überprüfen Sie, ob die erwarteten Ergebnisse angezeigt werden.
Ein von Client Automation produzierter Intellisig wird Kunden mithilfe des Jobs zum Herunterladen von Inhalt bereitgestellt. Wenn das Intellisig benutzerdefiniert ist, verwenden Sie DSM-Explorer, um ihn aus dem Testmanager zu exportieren und ihn dann in den Produktions-Enterprise- oder Domänen-Manager zu importieren.
|
Copyright © 2014 CA Technologies.
Alle Rechte vorbehalten.
|
|