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.
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).
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.
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>
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.
Spécifie le nom du fichier de script de signatures intelligentes.
Spécifie une liste de fichiers optionnels que le script requiert.
Définit un déclencheur optionnel.
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.
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 :
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
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.
Spécifie la fonction REM définie dans windows.dms.
Spécifie la fonction REM définie dans office.dms.
Spécifie la fonction REM définie dans sql.dms.
Spécifie la fonction REM définie dans main.dms qui appelle CloseDetectedSoftwareOutputFiles et effectue d'autres tâches de nettoyage.
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:
Une page Web affiche des informations supplémentaires concernant le script de signatures intelligentes.
Après avoir hébergé les fichiers d'aide, configurez l'URL dans la stratégie de configuration par défaut.
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.
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>
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
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.
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.
La recherche d'éléments dépend des détails du produit. Vous pouvez utiliser les fonctions suivantes :
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…
Utilisez les fonctions suivantes :
Lit le registre.
Lit une valeur.
Enumère les clés.
Enumère les variables.
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.
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.
Utilisez les fonctions suivantes :
Remarque : Le fichier binaire personnalisé ne peut pas être inclus dans la définition de script de signatures intelligentes.
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.
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.
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…
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)
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.
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 | ")
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 | ")
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.
Après avoir libéré les ressources que votre script utilise, appelez la fonction CloseDetectedSoftwareOutputFiles.
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.
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.
|
Copyright © 2013 CA.
Tous droits réservés.
|
|