Exemplo de probe e sensor de descoberta personalizados: preencha um IC com valores de arquivo de texto

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 2 min. de leitura
  • Esta probe Descoberta personalizada será útil se você precisar ler um arquivo de texto de um computador Windows e preencher um IC no CMDB com os valores do arquivo.

    Antes de Iniciar

    Função necessária: administrador

    Por Que e Quando Desempenhar Esta Tarefa

    Neste exemplo, o usuário deseja ler arquivos criados por BGinfo.
    Nota:
    Quando você tiver concluído a probe e o sensor, coloque a probe no classificador do Windows apropriado em Definição de Descoberta > Classificação de IC > Windows.

    Procedimento

    1. Navegar até Definição de Descoberta > Probese, em seguida, clique em Novo.
    2. Preencha os seguintes campos:
      • Nome: nome exclusivo e descritivo da probe
      • Tipo de probe: selecione Probe.
      • Descrição: descreva a função desta probe.
      • Usado pela Descoberta: marque esta caixa de seleção
      • Tópico da fila do ECC: este é o nome da probe que o MID Server deve executar. Neste exemplo, usamos WMIRunner.
      • Nome da fila do ECC: neste exemplo, usamos o nome descritivo WMI: arquivos BGInfo.
    3. Clique com o botão direito do mouse na barra de cabeçalho e selecione Salvar no menu de contexto.
    4. Selecione a guia Parâmetros de probe no formulário de probe e clique em Novo.
    5. Insira WMI_GetFiles.js como o Nome deste parâmetro.
    6. Copie o script abaixo para o campo Script e edite conforme necessário.
    7. Clique em Enviar.
      
      //
       // 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. Navegar até Definição de Descoberta > Sensorese, em seguida, clique em Novo.
      Preencha os seguintes campos:
      • Nome: use o mesmo nome da probe correspondente. Neste exemplo, usamos Windows - Obter arquivos BGInfo.
      • Reage à probe: o nome da probe criada no procedimento anterior: Windows - Obter arquivos BGInfo
      • Tipo de sensor: selecione o tipo de sensor a ser criado, neste exemplo, Sensor.
      • Descrição: descreve a função deste sensor.
      • Script: copie o script abaixo no campo Script e edite conforme necessário.
      • Tipo de sensor: determina como a resposta da probe é processada — neste exemplo, JavaScript.
    9. Clique em Enviar.
       
       
      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"
       
       });