Exemple de sonde et de capteur Discovery personnalisés : remplir un CI avec des valeurs de fichier texte

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 2 minutes de lecture
  • Cette sonde Détection personnalisée vous aide à lire un fichier texte à partir d'un ordinateur Windows et à renseigner un CI dans la CMDB avec les valeurs de ce fichier.

    Avant de commencer

    Rôle requis : admin

    Pourquoi et quand exécuter cette tâche

    Dans cet exemple, l'utilisateur souhaite lire les fichiers créés par BGinfo.
    Remarque :
    Lorsque vous avez terminé de configurer la sonde et le capteur, placez la sonde dans le classifieur Windows approprié à l’emplacement Définition de Détection > Classification CI > Windows.

    Procédure

    1. Accédez à la Définition de Détection > Probes, puis cliquez sur Nouveau.
    2. Renseignez les champs suivants :
      • Nom : nom unique et descriptif de la sonde.
      • Type de sonde : sélectionnez Sonde.
      • Description : décrivez la fonction de cette sonde.
      • Utilisé par Discovery : cochez cette case.
      • Sujet de file d'attente ECC : nom de la sonde que le MID Server doit exécuter. Dans cet exemple, nous utilisons le nom WMIRunner.
      • Nom de file d'attente ECC : dans cet exemple, nous utilisons le nom descriptif WMI : fichiers BGInfo.
    3. Cliquez avec le bouton droit de la souris dans la barre d'en-tête, puis choisissez Enregistrer dans le menu contextuel.
    4. Sélectionnez l'onglet Paramètres de sonde dans le formulaire Sonde, puis cliquez sur Nouveau.
    5. Attribuez le nom WMI_GetFiles.js à ce paramètre.
    6. Copiez le script ci-dessous dans le champ Script et modifiez-le si nécessaire.
    7. Cliquez sur Envoyer.
      
      //
       // Use ServiceNow WMIAPI to gather stats
       //
       var CMD_RETRIES = 3;
       var scanner = getScanner();
       if (scanner) {
         var output = "";
         for(var i = 0; i < CMD_RETRIES; i++) {
            output = scanner.winExec("%SystemRoot%\\system32\\cmd.exe /C type \\\"C:\\Information Systems\\BgInfo\\*.txt\\\"");
            if (output)
               break;
         }
         scanner.appendToRoot("output", output);
       }
    8. Accédez à la Définition de Détection > Capteurs, puis cliquez sur Nouveau.
      Renseignez les champs suivants :
      • Nom : utilisez le même nom que la sonde correspondante. Dans cet exemple, nous utilisons le nom Windows - Obtenir les fichiers BGInfo.
      • Réagit à la sonde : nom de la sonde créée lors de la procédure précédente : Windows - Obtenir les fichiers BGInfo.
      • Type de capteur : sélectionnez le type de capteur à créer, en l'occurrence Capteur.
      • Description : décrit la fonction de ce capteur.
      • Script : copiez le script ci-dessous dans le champ Script et modifiez-le si nécessaire.
      • Type de capteur : détermine le mode de traitement de la réponse de la sonde, en l'occurrence JavaScript.
    9. Cliquez sur Envoyer.
       
       
      new DiscoverySensor({ data: {}, process: function(result) { 
       
              this.parseOutput(result.output);
              this.update(this.data);
          },
       
       parseOutput: function(output) {
              var currentFile;
              var files = {};
       
       if (output.startsWith("<wmi")) {
                  var bgout = new XMLHelper(output).toObject();
                  if (!bgout)
                      return;
       
       output = bgout.output;
              }
       
       var lines = output.split(/\n/);
       
       for(var i = 0; i < lines.length; i++) {
                  var line = lines[i];
                  if (line.startsWith("C:\\Information Systems\\BgInfo\\")) {
                      currentFile = line.substr(30);
                      files[currentFile] = "";
                  } else if (currentFile) {
                      var newLine = line.trim();
                      if (newLine)
                          files[currentFile] += (files[currentFile]? "\n" : "") + newLine;
                  }
              }
       
       this.data['u_jack_id'] = files['JackID.txt'];
       this.data['warranty_expiration'] = files['Warranty.txt'];
       this.data['po_number'] = files['Ponum.txt'];},
       type: "DiscoverySensor"
       
       });