Rubrique précédente: Création de scripts personnalisés de signatures intelligentesRubrique suivante: Déclencheurs de scripts de signatures intelligentes


Exemples de scripts de signatures intelligentes et structure des dossiers

Deux exemples de scripts de signatures intelligentes sont fournis dans le dossier chemin_DSM\Intellisigs.

Sample.xml contient les métadonnées pour importer ces exemples dans votre MDB. Exécutez la commande suivante dans le répertoire des scripts de signatures intelligentes (Intellisigs) :

intellisigcmd import file=sample.xml

Chaque exemple de script de signatures intelligentes présente la structure de dossiers suivante :

UUID_script\ID_version\fichier_script.dms

Remarque : Enregistrez tous les fichiers de données supplémentaires des scripts de signatures intelligentes au même emplacement.

Retour au début

Informations complémentaires :

Exportation de scripts de signatures intelligentes

Importation de scripts de signatures intelligentes

Analyse des informations d'identification de logiciel

Comme pour les signatures traditionnelles, déterminez la structure du produit car celle-ci doit apparaître dans le script et sa sortie. Déterminez les points suivants :

Après avoir déterminé la structure du produit et la convention d'attribution d'un nom, décidez de la granularité des scripts de signatures intelligentes, autrement dit le nombre de scripts de signatures intelligentes distincts dont vous avez besoin pour couvrir le produit. Le produit peut être vaste, par exemple, Microsoft Office. Si le script requis pour détecter chaque produit est vaste, prévoyez plusieurs scripts par sous-produit. Ces scripts sont plus faciles à gérer qu'un grand script qui effectue toutes les tâches. Si le produit est petit, par exemple 7-zip, un script unique suffit.

Enfin, déterminez la méthode de détection. Un script de signatures intelligentes doit examiner les ressources sur le système pour détecter ce qui est installé. En d'autres mots, il recherche des fichiers spécifiques, des clés de registre, des fichiers de configuration et des paramètres. Un script de signatures intelligentes peut être aussi intelligent que nécessaire. A un niveau, il peut émuler une signature traditionnelle et rechercher des informations spécifiques. A un autre niveau, il peut analyser l'ordinateur et détecter tous les produits possibles de tous les fabricants, même si ces produits sont inconnus du script (similaire à une analyse heuristique). Un script de signatures intelligentes idéal peut fonctionner entre ces deux niveaux. Au minimum, un script de signatures intelligentes doit pouvoir détecter toutes versions et configurations d'un produit, passées et futures, (par opposition à des versions existantes spécifiques).

Retour au début

Ecriture d'un script de signatures intelligentes

Pour disposer d'un script personnalisé de signatures intelligentes, vous avez besoin d'un fichier de métadonnées et d'un script. Les fichiers doivent être dans une structure de dossiers spécifique. Pour un exemple de script de signatures intelligentes et sa structure de dossiers, reportez-vous à la rubrique Exemples de scripts de signatures intelligentes et structure des dossiers.

Ecriture du fichier de métadonnées

Le fichier de métadonnées est un fichier XML qui contient des informations concernant le script de signatures intelligentes. Le gestionnaire de domaines et l'agent d'analyse de logiciels utilisent ce fichier pour le gérer en tant qu'unité. Ce fichier contient également des définitions des déclencheurs. L'agent évalue ces règles pour déterminer si le script doit être exécuté de manière à réduire le temps d'exécution de l'agent.

Exemple :

<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

Spécifie l'UUID du script de signatures intelligentes. Vous pouvez générer cet ID à l'aide de l'outil de ligne de commande de scripts de signatures intelligentes, intellisigcmd.exe genuuid.

iscript

Spécifie le nom du fichier de script de signatures intelligentes.

Additional_files

Spécifie une liste de fichiers optionnels que le script requiert.

Groupe

Définit un déclencheur optionnel.

Retour au début

Ecriture du script

Pour écrire un script de signatures intelligentes, vous devez connaître les bases de l'écriture de programmes à l'aide de dmscript.

Remarque : Pour plus d'informations sur le langage de dmscript, reportez-vous au document ITCM_DMSScriptingLanguage_Ref_FRA.pdf.

Un script de signatures intelligentes effectue les tâches suivantes :

Sous Windows, vous pouvez utiliser l'utilitaire dmsedit pour développer le script. Il s'agit d'un éditeur et d'un débogueur intégrés permettant de développer et d'exécuter des scripts. Cette méthode fournit toutes les fonctionnalités de débogage standard des points d'arrêt, en parcourant le code et en examinant les variables.

Important : N'utilisez pas l'instruction Print sous Windows car le script n'est pas interactif. Sous Windows, le résultat apparaît dans une boîte de dialogue sans possibilité de défilement et s'affiche uniquement pendant 10 secondes. Sous UNIX, la sortie est de type stdout.

Utilisez un éditeur de texte et une fenêtre de ligne de commande pour développer le script. Vous pouvez utiliser la fonction dmstrace pour consigner des informations de diagnostic dans le journal de suivi.

Retour au début

Ecriture de scripts détectant plusieurs produits

Le langage dmscript prend en charge la directive #include qui vous permet d'inclure des scripts pour y exécuter des fonctions. Conformément aux meilleures pratiques de création de scripts de signatures intelligentes, il est recommandé d'écrire les scripts selon l'approche suivante :

  1. Ecrivez un script pour chaque produit que vous prévoyez de détecter et ajoutez-le comme fichier auxiliaire à la définition de script de signatures intelligentes. Ces scripts assurent la détection et l'enregistrement du produit détecté, de sa version finale, de son patch, ainsi que de ses instances détectées. Vérifiez que ces scripts n'exécutent aucune initialisation de script de signatures intelligentes ni code de finalisation.
  2. Ecrivez un script principal qui effectue l'initialisation de script de signatures intelligentes et la finalisation, puis ajoutez-le à la définition de script de signatures intelligentes. Utilisez la directive #include dans le script principal pour inclure les fichiers auxiliaires et exécuter la fonction de détection exposée dans chacun en tant qu'exécution du script principal.

Exemple :

Le fichier auxiliaire windows.dms définit la fonction DetectWindows(…).

Le fichier auxiliaire office.dms définit la fonction DetectOffice(…).

Le fichier auxiliaire sql.dms définit la fonction DetectSql(…).

Le script principal main.dms s'affiche comme suit :

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

DoInitialization(…)

Spécifie la fonction REM définie dans main.dms qui analyse les arguments et appelle OpenDetectedSoftwareOutputFiles, et effectue d'autres tâches d'initialisation.

DetectWindows(…)

Spécifie la fonction REM définie dans windows.dms.

DetectOffice(…)

Spécifie la fonction REM définie dans office.dms.

DetectSql(…)

Spécifie la fonction REM définie dans sql.dms.

DoFinalization(…)

Spécifie la fonction REM définie dans main.dms qui appelle CloseDetectedSoftwareOutputFiles et effectue d'autres tâches de nettoyage.

Retour au début

Ecriture de l'Aide pour le script personnalisé de signatures intelligentes

Vous pouvez écrire l'Aide pour le script de signatures intelligentes que vous créez et fournir des détails supplémentaires dans une page Web distincte. Les détails aident les utilisateurs d'un script de signatures intelligentes à en savoir plus sur ce dernier. L'Aide est affichée dans la page des propriétés du script de signatures intelligentes dans l'explorateur DSM.

Procédez comme suit:

  1. Affichez le fichier de l'Aide pour un des scripts de signatures intelligentes fournis par CA.
    1. Ouvrez l'explorateur DSM et accédez à Logiciel(s), Définitions.
    2. Cliquez avec le bouton droit de la souris sur un script de signatures intelligentes fourni par CA, puis cliquez sur Propriétés.
    3. Cliquez sur l'onglet Détails dans la boîte de dialogue Propriétés de script de signatures intelligentes.
    4. Cliquez sur le bouton ? .

      Une page Web affiche des informations supplémentaires concernant le script de signatures intelligentes.

  2. Créez un fichier d'aide .html pour votre script de signatures intelligentes personnalisé basé sur un script de signatures intelligentes fourni par CA.
  3. Enregistrez le fichier d'aide en lui affectant le nom du script de signatures intelligentes comme nom de fichier.
  4. Hébergez les fichiers d'aide sur un serveur Web.

    Après avoir hébergé les fichiers d'aide, configurez l'URL dans la stratégie de configuration par défaut.

  5. Ouvrez le Panneau de configuration, puis cliquez sur Configuration, Stratégie de configuration. Descellez la stratégie de configuration par défaut.
  6. Accédez à DSM, puis cliquez sur Console d'administration.
  7. Double-cliquez sur le paramètre customIntellisigsURL et spécifiez la valeur en tant que c:\webinfo\%name%.html dans la boîte de dialogue Définition des propriétés.

    Le fichier d'aide est associé au script de signatures intelligentes correspondant sur la base du nom de fichier HTML et de l'URL que vous avez configurée. Lorsque vous testez le script de signatures intelligentes, vous pouvez également tester l'Aide.

    Remarque : Le paramètre caIntellisigsURL spécifie les détails du fichier d'aide pour les scripts de signatures intelligentes fournis par CA.

  8. Répétez l'étape 1 pour votre script de signatures intelligentes personnalisé afin d'afficher le fichier d'aide correspondant.

Retour au début

Initialisation

L'analyseur lance dmscript dans le même répertoire que le fichier de script avec les arguments suivants :

dmscript <fichier_script> -I <UUID_script_signatures_intelligentes> -v <version_script_signatures_intelligentes> -n <nom_script_signatures_intelligentes> -t <info_déclencheur>
info_déclencheur

Spécifie une chaîne facultative qui contient des informations concernant le déclencheur qui exécute le script de signatures intelligentes. Un script peut utiliser cette chaîne comme des indices dans son processus de détection, si nécessaire.

Un script doit vérifier que ces arguments sont présents et, en leur absence, signaler une erreur et fermer l'opération. Les valeurs d'arguments sont disponibles à l'aide de la fonction argv.

Exemple :

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
Signalement et suivi des erreurs

Dmscript permet de consigner des informations de suivi dans le fichier journal TRC_DMSCRIPTINTERPRETER_0.log. Le fichier journal est utile pour le débogage lors du développement et le dépannage une fois le script de signatures intelligentes publié.

Utilisez la fonction LogDetectedSoftwareError pour signaler les erreurs au gestionnaire. Cette fonction écrit les erreurs dans un format standard dans un fichier appelé <UUID>.err. Ce fichier est automatiquement chargé dans le gestionnaire de domaines. Les erreurs sont également copiées dans le fichier journal de suivi. L'explorateur DSM affiche les messages dans la boîte de dialogue du statut du job après les avoir converti dans la langue locale.

Remarque : Bien que cette fonction vous permette de spécifier directement le texte anglais, utilisez des messages d'erreur localisés. Si nécessaire, modifiez le fichier statmod.<lang> dans le gestionnaire ou l'explorateur afin d'ajouter vos propres messages.

Retour au début

Création du fichier de sortie

Ouvrez le fichier de sortie à l'aide de la fonction OpenDetectedSoftwareOutputFiles.

Exemple :

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

Cette fonction crée un fichier appelé <UUID>.xml, qui contient les résultats.

Recherche d'éléments

La recherche d'éléments dépend des détails du produit. Vous pouvez utiliser les fonctions suivantes :

Détection des fichiers et répertoires

Pour détecter si un fichier existe, utilisez la fonction ExistFile. Pour détecter un répertoire, utilisez la fonction ExistDirectory.

Exemple :

ProgramFiles = EnvGetString(“ProgramFiles”)
if ExistDirectory (ProgramFiles + “\Microsoft Office”) then
…found MS Office…
if ExistFile (ProgramFiles + “\Microsoft Office\Office14\EXCEL.EXE") then
… found excel…
Lecture du registre

Utilisez les fonctions suivantes :

RegOpenKey

Lit le registre.

RegQueryValue

Lit une valeur.

RegEnumKeys

Enumère les clés.

RegEnumVariable

Enumère les variables.

RegCloseKey

Ferme une clé.

Remarque : dmscript étant un programme 32 bits, Windows applique la redirection du registre à certaines clés comme HKLM\SOFTWARE. Pour lire les parties du registre qui sont réservées aux programmes 64 bits, appelez setmode64(1). Cette action désactive la redirection. Cette fonction s'applique également à certaines parties du système de fichiers comme \windows\system32.

Lecture de l'environnement

Pour lire le contenu d'une variable d'environnement sous Windows ou UNIX, utilisez la fonction EnvGetString.

Exemple :

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

Vous pouvez également énumérer toutes les variables d'environnement à l'aide des fonctions EnvGetFirst et EnvGetNext.

Lecture des fichiers de configuration

Utilisez les fonctions suivantes :

Remarque : Le fichier binaire personnalisé ne peut pas être inclus dans la définition de script de signatures intelligentes.

Retour au début

Exécution de programmes

Il se peut que dmscript ne puisse pas accomplir certaines tâches ou que celles-ci soient plus simples à exécuter par le biais d'un script shell existant ou d'un programme externe. Dans ces cas, utilisez la fonction Execute.

Exemple :

Pour obtenir la version système sous Windows, utilisez la commande suivante :

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

La sortie est disponible dans le fichier dms.tmp.

Lecture de la liste des programmes installés

Sous Windows, exécutez une des commandes suivantes à partir de Microsoft, SysInternals :

wmic product
psinfo -accepteula -s

Redirigez la sortie vers un fichier, puis lisez-le.

Détection des programmes en cours d'exécution

dmscript ne peut pas détecter directement les programmes en cours d'exécution, mais il peut générer des commandes système qui peuvent détecter ces programmes, puis lire leur sortie.

Exemple :

(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…
Création de la sortie

Les produits, versions finales, patchs et instances existent dans une hiérarchie que vous devez suivre dans un script :

Cela signifie que vous devez d'abord spécifier un produit, puis ses versions finales, ses patchs et ses instances. Si vous créez des éléments secondaires, le nom du parent et la version doivent aussi être spécifiés. dmscript identifie la hiérarchie en cours de création et vérifie que les parents des éléments existent et sont valides. Si ce n'est pas le cas, une erreur est renvoyée. Il existe un nombre de fonctions spécifiques pour créer des produits. Ces fonctions présentent le format général suivant :

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

Création d'un produit

Pour créer un produit, utilisez le code suivant :

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

Exemple :

CreateDetectedSoftwareProduct("Microsoft Windows 7 Edition Intégrale", “6.1”, "VersionNumber=6.1 | Language=fr-fr | Bitness=64 | Architecture=x64 | Manufacturer=Microsoft Corporation | Category=Systèmes d'exploitation | Description=Produit Microsoft Windows 7 | ")

Dans cet exemple, les valeurs sont définies, mais dans un script réel, elles sont déterminées dans le cadre du processus de détection.

Création d'une version finale

Pour créer une version finale d'un produit, utilisez le code suivant :

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

Exemple :

CreateDetectedSoftwareRelease("Microsoft Windows 7 Edition Intégrale", "6.1", "Microsoft Windows 7 Edition Intégrale x64 64 fr-fr", "6.1.7600", "VersionNumber=6.1.7600 |Language=fr-fr | Bitness=64 |Architecture=x64 | Manufacturer=Microsoft Corporation | Category=Systèmes d'exploitation | Description=Version finale Microsoft Windows 7 | ")
Création d'un patch

Pour créer un patch, procédez comme suit :

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

Exemple :

CreateDetectedSoftwarePatch("Microsoft Windows 7 Edition Intégrale", "6.1", "Microsoft Windows 7 Edition Intégrale x64 64 fr-fr", "6.1.7600", "KB971033 x64 64 fr-fr", "Language=fr-fr | Bitness=64 | Architecture=x64 | Manufacturer=Microsoft Corporation | Category=Systèmes d'exploitation | Description=Mise à jour du vérificateur d'activation de Microsoft Windows 7 | ")

Création d'une instance

Pour créer une instance installée d'une version finale, utilisez le code suivant :

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

Pour créer une instance installée d'un patch :

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

Exemple :

CreateDetectedSoftwareReleaseInstance("Microsoft Windows 7 Edition Intégrale", "6.1", "Microsoft Windows 7 Edition Intégrale x64 64 fr-fr", "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 Edition Intégrale", "6.1", "Microsoft Windows 7 Edition Intégrale x64 64 fr-fr", "6.1.7600", "KB971033 x64 64 fr-fr", "", "Origin=Forward Inc | TrustLevel=5 | ")

Remarque : Remplacez la valeur dans le paramètre Origin pour refléter le nom de votre organisation.

Retour au début

Fermeture du fichier de sortie

Après avoir libéré les ressources que votre script utilise, appelez la fonction CloseDetectedSoftwareOutputFiles.

Test du script de signatures intelligentes

Testez votre script hors ligne sur un petit nombre d'ordinateurs avant de le publier. Ce test vous permet de corriger le script avant de l'appliquer sur tous les ordinateurs de votre organisation. Vous pouvez exécuter un script à partir de la ligne de commande, puis examiner les résultats dans les fichiers suivants :

Lors du test, il n'est pas nécessaire de spécifier un UUID sur la ligne de commande. Toute chaîne fonctionne et est utilisée pour nommer les fichiers de sortie. L'UUID est uniquement requis par l'agent, qui recherche les fichiers nommés à l'aide de cette chaîne. Il est recommandé d'utiliser un UUID.

Vérifiez que les ordinateurs, les systèmes d'exploitation et les logiciels installés que vous voulez détecter sont disponibles. Si ce n'est pas le cas, simulez les logiciels installés en créant le fichier, le registre et les entrées de configuration appropriés qui seraient normalement présents. Vous pouvez obtenir des versions d'évaluation auprès des fournisseurs.

Vérifiez que vous testez le script sur tous les systèmes d'exploitation cibles.

Pour le deuxième niveau de test, créez un petit environnement DSM à l'aide d'ordinateurs de réserve ou virtuels. Cet environnement doit avoir une MDB, un gestionnaire de domaines et un serveur de modularité sur un ordinateur et l'agent Asset Management doit être installé sur un des ordinateurs opérationnels cibles. Importez le script de signatures intelligentes à l'aide de l'explorateur DSM et exécutez une tâche de détection de logiciels basée sur le script de signatures intelligentes. Vérifiez que les résultats attendus s'affichent.

Retour au début

Publication du script de signatures intelligentes

Un script de signatures intelligentes produit par CA ITCM est livré aux clients à l'aide du job de téléchargement de contenu. Si le script de signatures intelligentes est personnalisé, utilisez l'explorateur DSM pour l'exporter depuis le gestionnaire de test pour ensuite l'importer dans le gestionnaire de domaines ou le gestionnaire d'entreprise de production.

Informations complémentaires :

Exportation de scripts de signatures intelligentes

Importation de scripts de signatures intelligentes