カスタムディスカバリープローブおよびセンサーの例:CI にテキストファイルの値を入力

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:4分
  • このカスタム ディスカバリー プローブは、 Windows コンピューターからテキストファイルを読み込み、CMDB の CI にファイルの値を入力する必要がある場合に役立ちます。

    始める前に

    必要なロール:admin

    このタスクについて

    この例では、ユーザーは BGinfo で作成されたファイルを読み込もうとしています。
    注:
    プローブとセンサーが完了したら、次の場所にある適切な Windows 分類子にプローブを配置します。 ディスカバリー定義 > CI の分類 > Windows.

    手順

    1. 移動先 ディスカバリー定義 > プローブをクリックし、[ 新規] をクリックします。
    2. 次のフィールドに入力します。
      • 名前:プローブについて、一意でわかりやすい名前です。
      • プローブタイプ[プローブ] を選択します。
      • 説明:このプローブの機能について説明します。
      • ディスカバリーで使用:このチェックボックスを選択します
      • ECC キュートピック:MID サーバーが実行されるプローブの名前です。この例では、WMIRunner を使用します。
      • ECC キュー名:この例では、わかりやすい名前として WMI: BGInfo ファイル を使用します。
    3. ヘッダーバーで右クリックし、コンテキストメニューから [保存] を選択します。
    4. プローブフォームで [プローブパラメーター] タブを選択し、[新規] をクリックします。
    5. このパラメーターの名前として WMI_GetFiles.js と入力します。
    6. 以下のスクリプトを [スクリプト] フィールドにコピーし、必要に応じて編集します。
    7. [送信] をクリックします。
      
      //
       // 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. 移動先 ディスカバリー定義 > センサーをクリックし、[ 新規] をクリックします。
      次のフィールドに入力します。
      • 名前:照合するプローブと同じ名前を使用します。この例では、Windows - Get BGInfo files を使用しています。
      • 反応対象プローブ:前の手順で作成されたプローブの名前:Windows - Get BGInfo files
      • センサータイプ:このサンプルセンサーで作成するセンサーのタイプを選択します。
      • 説明:このセンサーの機能について説明します。
      • スクリプト:以下のスクリプトを [スクリプト] フィールドにコピーし、必要に応じて編集します。
      • センサータイプ:この例の JavaScript で、プローブからの応答をどのように処理するかを決定します。
    9. [送信] をクリックします。
       
       
      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"
       
       });