Modèles de signature étendue

Disponible à partir de la version 9.2.2. Les signatures étendues sont des signatures flexibles qui sont utilisées pour la reconnaissance de logiciel. Elles se composent d'un certain nombre de variables exportées et de la déclaration des opérations qui sont requises pour affecter une valeur à ces variables. Mettez à jour le serveur BigFix et le catalogue des logiciels pour permettre à la fonction de signature étendue de signaler les versions détaillées du logiciel installé.

Opérandes et opérateurs

Chaque signature étendue peut être visualisée comme un ensemble d'instructions de traitement qui sont utilisées par des analyses de logiciels pour détecter si un logiciel est installé sur le système informatique cible. Ces expressions de traitement se composent de deux types de composants : opérandes et opérateurs. Les opérandes sont les objets qui sont manipulés, et les opérateurs sont des symboles qui représentent des actions caractéristiques. Les opérandes et les opérateurs peuvent être scalaires (composés d'une seule valeur) ou vectoriels (composés de plusieurs valeurs).

La version de schéma prise en charge par BigFix Inventory est 2.7.

Interprétation des variables par l'inventaire BigFix

Les variables suivantes sont interprétées par BigFix Inventory :
  • IS_INSTALLéD - obligatoire

    Lorsque le logiciel est détecté, la condition doit être définie sur true. Lorsque le logiciel n'est pas détecté, la condition doit être définie sur false.

  • INSTALL_PATH - facultatif

    La valeur est répertoriée dans le chemin d'installation.

  • 10.0.0 DéTAILéD_VéR

    Utilisez la variable DéTAILéD_VéR pour rechercher la version détaillée. Les informations s'affichent dans la colonne version détaillée du composant. La valeur est répertoriée dans la colonne version détaillée du composant. La version de composant est référencée à partir de l'entrée du catalogue.

Modèles de signature étendue

La section suivante fournit des modèles de signature étendue pour vous aider à créer une nouvelle signature étendue et mentionne les opérateurs et les facteurs nécessaires qui explicitent les valeurs qu'elles contiennent. Le tableau répertorie les modèles de signatures étendues à mesure qu'elles sont créées dans BigFix Inventory.

Remarque : Pour éviter l'échec de validation XML, assurez-vous que l'élément XML suivant est présent dans la signature étendue que vous créez. Dans le cas contraire, la validation XML échoue.
<Variable name="IS_INSTALLED">
...
</Variable>
Identification ou détection de Modèle témoin
version détaillée de la génération de rapports à l'aide de la valeur récupérée depuis le registre Le modèle suivant vérifie l'existence d'une clé de registre de valeur 4.0 et signale la clé en tant que version détaillée.
<Variable name="DETAILED_VER">
  <RegKeyValue entry="Installed Version" key="HKEY_LOCAL_MACHINE\Software\Microsoft\SMS\Client\Client Components\Component Name\Installation Properties" section="64or32"/>
  </Variable>
  <Variable name="IS_INSTALLED">
  <Compare relation="eq" type="string">
  <StringSlice inputString="$(DETAILED_VER)" startIndex="0" endIndex="3"/>
  <ValueOf value="4.0"/>
  </Compare>
</Variable>
Nom de fichier

Le modèle ci-après vérifie l'identification ou la détection d'un nom de fichier.

<Variable name="IS_INSTALLED" export="true">
  <Compare type="string" relation="ne">
    <VectorToScalar>
      <FindFilePathEx name="A_FILENAME.EXE"/>
    </VectorToScalar>
    <ValueOf value=""/>
  </Compare>
</Variable>

Il est inutile d'indiquer la taille du fichier.

éxistence d'un certain nombre de clés de registre Windows

Le modèle ci-après vérifie l'identification ou la détection de l'existence d'un certain nombre de clés de registre Windows.

Le nombre de clés à fournir dépend de l'application.

<Variable name="IS_INSTALLED">
  <And>
    <RegKeyValueEqual key="KEY NAME A" entry="ENTRY NAME" value="VALUE" section="64or32"/>
    <RegKeyValueEqual key="KEY NAME B" entry="ENTRY NAME" value="VALUE" section="64or32"/>
    <RegKeyValueEqual key="KEY NAME N" entry="ENTRY NAME" value="VALUE" section="64or32"/>
  </And>
</Variable>
éxistence d'au moins l'une des clés de registre

Le modèle ci-après vérifie l'identification ou la détection de l'existence d'au moins une des clés de registre.

<Variable name="IS_INSTALLED" export="true">
  <Or>
    <RegKeyValueEqual key="KEY NAME A" entry="ENTRY NAME" value="VALUE" section="64or32"/>
    <RegKeyValueEqual key="KEY NAME B" entry="ENTRY NAME" value="VALUE" section="64or32"/>
    <RegKeyValueEqual key="KEY NAME N" entry="ENTRY NAME" value="VALUE" section="64or32"/>
  </Or>
</Variable>
Fichier qui se trouve dans un répertoire particulier défini par un filtre

Le modèle ci-après vérifie l'identification ou la détection du fichier qui se trouve dans un répertoire particulier défini par un filtre.

Remarque : Utilisez "?" comme caractère générique unique et "*" pour désigner plusieurs caractères.
Restriction : Remplacez les barres obliques ou barres obliques inversées dans le chemin du fichier par le caractère générique "?".
<Variable name="IS_INSTALLED" export="true">
  <Compare type="string" relation="ne">
    <VectorToScalar>
      <Vector filter="?opt?symantec*">
        <FindFilePathEx name="FILENAME"/>
      </Vector>
    </VectorToScalar>
    <ValueOf value="" />
  </Compare>
</Variable>
Nom de clé, entrée principale et sa valeur pour une clé de registre

Le modèle ci-après vérifie l'identification ou la détection du nom de la clé, de l'entrée de la clé et de sa valeur pour une clé de registre.

<Variable name="IS_INSTALLED" export="true">
  <RegKeyValueEqual key="KEY NAME" entry="ENTRY NAME" value="VALUE" section="64or32"/>
</Variable>
Architecture de l'UC

Le modèle ci-après vérifie l'identification ou la détection de l'architecture de l'UC.

<Variable name="IS_INSTALLED" export="true">
  <Compare relation="eq" type="string">
    <ValueOf value="$(B_PROCESSOR_ARCH)"/>
    <ValueOf value="ARCHITECTURE_CODE"/>
  </Compare>
</Variable>
Where ARCHITECTURE_CODEs:
  • AIX, IBM i et Linux PPC : PPC
  • Linux x86, Mac OS X et Solaris x86 : IX86
  • Linux on System z : S390
  • HP-UX Itanium : ITANIUM
  • HP-UX PA-RISC : PA-RISC
  • Solaris SPARC : SPARC
Contenu du fichier et chaînes spécifiées correspondantes

Le modèle ci-après vérifie l'identification ou la détection du contenu du fichier et des chaînes spécifiées correspondantes.

Remarque : Le scanner indique seulement des fichiers texte. Il ne peut pas lire les fichiers binaires et d'archives, tels que .jar, .ear et .zip.
<MultipleInstance>
  <Iterator name="file_list" export="false">
    <FindFilePathEx name="MYFILE.txt" />
  </Iterator>
  <Instance>
    <Variable name="file_read" export="false">
      <ReadFile path="$(file_list)MYFILE.txt" />
    </Variable>
    <Variable name="IS_INSTALLED">
      <Compare type="string" relation="ne">
        <VectorToScalar>
          <Vector filter="*MYAPP_version=MYAPP-1.3*">
          <ValueOf value="$(file_read)" />
          </Vector>
        </VectorToScalar>
        <ValueOf value="" />
      </Compare>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP" />
    </Condition>
  </Instance>
</MultipleInstance>
Le nom du fichier à détecter est MYFILE.txt et la valeur de la chaîne est MYAPP_version=MYAPP-1.3.

éxistence de deux fichiers dans un répertoire particulier où le fichier someprog.jar a une taille particulière

Le modèle ci-après vérifie l'identification ou la détection de l'existence de deux fichiers dans un répertoire particulier où le fichier someprog.jar possède une taille particulière.

<MultipleInstance>
  <Iterator name="INSTALL_PATH">
    <Vector filter="*SOMEPROG.ear?SOMEPROG.war?">
      <FindFilePathEx name="essbase.jar"/>
    </Vector>
  </Iterator>
  <Instance>
    <Variable name="IS_INSTALLED">
      <FileInfoCompare absolutePath="$(INSTALL_PATH)someprog.jar" field="size" value="649432" relation="eq" />
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP"/>
    </Condition>
	</Instance>
</MultipleInstance>
Rapport Données du package BFI correspondantes côté nœud final Il est possible de faire correspondre les données répertoriées dans le rapport Données du package BFI côté nœud final à l'aide de l'opérande PackageInforMatch.

Voici un exemple à ce sujet. L'exemple ci-dessous peut être combiné avec d'autres exemples mentionnés sur cette page.

<Variable name="IS_INSTALLED" export="true">
<PackageInfoMatch vendor="RStudio*" name="rstudio-server" version="1.1.*"/></Variable>
éxistence d'un fichier particulier

Le modèle ci-après vérifie l'identification ou la détection de l'existence d'un fichier particulier.

<MultipleInstance>
  <Iterator name="INSTALL_PATH">
    <FindFilePathEx name="SWTAG_NAME.swtag"/>
  </Iterator>
  <Instance>
    <Variable name="IS_INSTALLED">
      <Compare type="string" relation="ne">
        <ValueOf value="$(INSTALL_PATH)" />
        <ValueOf value="" />
      </Compare>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP"/>
    </Condition>
  </Instance>
</MultipleInstance>
Type de fichier avec seulement une partie du nom donné

Le modèle ci-après vérifie l'identification ou la détection du type de fichier avec seulement une partie du nom donné.

<MultipleInstance>
  <Iterator name="INSTALL_PATH">
    <FindFilePathEx name="*.FILETYPE" appendFileName="true"/>
  </Iterator>
  <Instance>
    <Variable name="IS_INSTALLED">
      <Compare type="string" relation="ne">
        <ValueOf value="$(INSTALL_PATH)" />
        <ValueOf value="" />
      </Compare>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP"/>
    </Condition>
  </Instance>
</MultipleInstance>
éxistence d'un fichier spécifique, un autre fichier n'existe pas

Le modèle ci-après vérifie l'identification ou la détection de l'existence d'un fichier spécifique, alors qu'un autre fichier n'existe pas.

<MultipleInstance>
  <Iterator name="INSTALL_PATH">
    <FindFilePathEx name="file1"/>
  </Iterator>
  <Instance>
    <Variable name="IS_INSTALLED">
      <And>
        <FileExists absolutePath="$(INSTALL_PATH)file1"/>
        <Not>
          <Compare type="string" relation="ne">
            <VectorToScalar>
              <FindFilePathEx name="file2"/>
            </VectorToScalar>
            <ValueOf value=""/>
          </Compare>
        </Not>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP"/>
    </Condition>
  </Instance>
</MultipleInstance>
éléments logiciels quand la clé de registre identifie le produit, systèmes Windows

Le modèle ci-après vérifie l'identification ou la détection des éléments logiciels lorsque la clé de registre identifie le produit (systèmes Windows).

Compare une partie de la chaîne principale. Pour aborder ce cas, deux signatures doivent être créées : une pour l'architecture 32 bits et une pour l'architecture 64 bits.

<MultipleInstance>
  <Iterator name="reg">
    <Vector filter="*000000FF1CE}" ignoreCase="false">
      <RegKeyList root="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" section="32" subkeys="false"/>    </Vector>
  </Iterator>
  <Instance>
    <Variable name="IS_INSTALLED">
      <And>
        <Compare relation="eq" type="string">
          <Clip endIndex="76" inputString="$(reg)" startIndex="74"/>
          <ValueOf value="140"/>
        </Compare>
        <Compare relation="eq" type="string">
          <Clip endIndex="84" inputString="$(reg)" startIndex="81"/>
          <ValueOf value="0018"/>
        </Compare>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action do="SKIP" onValue="false"/>
    </Condition>
  </Instance>
</MultipleInstance>

<MultipleInstance>
  <Iterator name="reg">
    <Vector filter="*000000FF1CE}" ignoreCase="false">
      <RegKeyList root="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" section="64" subkeys="false"/>
    </Vector>
  </Iterator>
  <Instance>
    <Variable name="IS_INSTALLED">
      <And>
        <Compare relation="eq" type="string">
          <Clip endIndex="76" inputString="$(reg)" startIndex="74"/>
          <ValueOf value="140"/>
        </Compare>
        <Compare relation="eq" type="string">
          <Clip endIndex="84" inputString="$(reg)" startIndex="81"/>
          <ValueOf value="0018"/>
        </Compare>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action do="SKIP" onValue="false"/>
    </Condition>
  </Instance>
</MultipleInstance>
Clés de registre, où l'édition et la version sont stockées

Le modèle ci-après vérifie l'identification ou la détection des clés de registre, où l'édition et la version sont stockées.

Cette signature correspond à une plage de versions caractéristique.

<Variable name="IS_INSTALLED">
  <And>
   <RegKeyValueContains entry="Edition" key="HKEY_LOCAL_MACHINE\SOFTWARE\Vendor\SoftwareName\Data" value="Enterprise" section="64or32"/>
    <RegKeyVersionCompare key="HKEY_LOCAL_MACHINE\SOFTWARE\Vendor\SoftwareName\CurrVer" entry="Version" relation="ge" value="3.00.00.00" section="64or32"/>
    <RegKeyVersionCompare key="HKEY_LOCAL_MACHINE\SOFTWARE\Vendor\SoftwareName\CurrVer" entry="Version" relation="le" value="3.9999.9999.9999" section="64or32"/>
  </And>
</Variable>
Instances logicielles en identifiant leurs clés de registre.

Le modèle ci-après vérifie l'identification ou la détection des instances de logiciel en identifiant leur clé de registre.

Le nom d'instance est répercuté par le caractère d'astérisque dans le chemin d'accès de registre : HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\SoftwareName\*\Info\CurrVer

Cette signature correspond à une plage d'éditions et de versions spécifique. Pour aborder ce cas, deux signatures doivent être créées : une pour l'architecture 32 bits et une pour l'architecture 64 bits.

<MultipleInstance>
  <Iterator export="false" name="rg">
    <Vector>
      <RegKeyList root="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SoftwareName\*" section="64" subkeys="false"/>
    </Vector>
  </Iterator>
  <Instance>
    <Variable export="false" name="vr">
      <RegKeyValue entry="Version" key="$(rg)\Info\CurrVer" mustExists="true" section="64"/>
    </Variable>
    <Variable name="IS_INSTALLED">
      <And>
        <RegKeyValueContains entry="Edition" key="$(rg)\Data" section="64" value="Enterprise"/>
        <Contains inputString="$(vr)" position="start" searchedString="3."/>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action do="SKIP" onValue="false"/>
    </Condition>
  </Instance>
</MultipleInstance>

<MultipleInstance>
  <Iterator export="false" name="rg">
    <Vector>
      <RegKeyList root="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SoftwareName\*" section="32" subkeys="false"/>
    </Vector>
  </Iterator>
  <Instance>
    <Variable export="false" name="vr">
      <RegKeyValue entry="Version" key="$(rg)\Info\CurrVer" mustExists="true" section="32"/>
    </Variable>
    <Variable name="IS_INSTALLED">
      <And>
        <RegKeyValueContains entry="Edition" key="$(rg)\Data" section="32" value="Enterprise"/>
        <Contains inputString="$(vr)" position="start" searchedString="3."/>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action do="SKIP" onValue="false"/>
    </Condition>
  </Instance>
</MultipleInstance>
Désinstallation de clés de registre, systèmes Windows

Le modèle ci-après vérifie l'identification ou la détection des clés de registre de la désinstallation, sur les systèmes Windows.

Cette signature effectue une itération dans toutes les clés et essaye de faire coïncider des modèles spécifiques dans les valeurs DisplayName et Displayversion. Pour aborder ce cas, deux signatures doivent être créées : une pour l'architecture 32 bits et une pour l'architecture 64 bits.

<MultipleInstance>
  <Iterator name="reg" export="true">
    <RegKeyList root="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*"     section="32" subkeys="false"/>      </Iterator>
  <Instance>
    <Variable name="valueName" export="true">
      <RegKeyValue entry="DisplayName" key="$(reg)" section="32" />
    </Variable>
    <Variable name="valueVersion" export="true">
      <RegKeyValue entry="DisplayVersion" key="$(reg)" section="32" />
    </Variable>
    <Variable name="IS_INSTALLED">
      <And>
        <Contains inputString="$(valueName)" searchedString="TestProduct" position="start"/>
        <Contains inputString="$(valueVersion)" searchedString="12.0" position="start"/>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP"/>
    </Condition>
  </Instance>
</MultipleInstance>

<MultipleInstance>
  <Iterator name="reg" export="true">
    <RegKeyList root="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*"     section="64" subkeys="false"/>
  </Iterator>
  <Instance>
    <Variable name="valueName" export="true">
      <RegKeyValue entry="DisplayName" key="$(reg)" section="64" />
    </Variable>
    <Variable name="valueVersion" export="true">
      <RegKeyValue entry="DisplayVersion" key="$(reg)" section="64" />
    </Variable>
    <Variable name="IS_INSTALLED">
      <And>
        <Contains inputString="$(valueName)" searchedString="TestProduct" position="start"/>
        <Contains inputString="$(valueVersion)" searchedString="12.0" position="start"/>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP"/>
    </Condition>
  </Instance>
</MultipleInstance>