예시 사용자 지정 검색 프로브 및 센서: CI에 텍스트 파일 값 입력

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 3분
  • 이 사용자 지정 디스커버리 프로브는 Windows 컴퓨터에서 텍스트 파일을 읽고 CMDB의 CI에 해당 파일의 값을 입력해야 할 경우에 도움이 됩니다.

    시작하기 전에

    필요한 역할: admin

    이 태스크 정보

    이 예에서는 사용자가 BGinfo로 생성된 파일을 읽어야 한다고 가정합니다.
    주:
    프로브와 센서를 완료했으면 다음 위치에서 적절한 Windows 분류 규칙에 프로브를 배치합니다. 디스커버리 정의 > CI 분류 > Windows.

    프로시저

    1. 다음으로 이동 디스커버리 정의 > 프로브를 클릭한 다음 새로 만들기를 클릭합니다.
    2. 다음 필드를 작성합니다.
      • 이름: 프로브에 대한 고유한 설명적인 이름
      • 프로브 유형: 프로브를 선택합니다.
      • 설명: 이 프로브의 기능을 설명합니다.
      • 검색에 사용됨: 이 확인란을 선택합니다.
      • ECC 큐 주제: MID 서버가 실행할 프로브의 이름입니다. 이 예에서는 WMIRunner가 사용됩니다.
      • ECC 큐 이름: 이 예에서는 설명적인 이름 WMI: BGInfo 파일이 사용됩니다.
    3. 헤더 막대를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 저장을 선택합니다.
    4. 프로브 양식에서 프로브 매개변수 탭을 선택한 후 새로 만들기를 클릭합니다.
    5. 이 매개변수의 이름으로 WMI_GetFiles.j를 입력합니다.
    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 파일이 사용됩니다.
      • 프로브에 반응: 이전 절차에서 만든 프로브의 이름: Windows - Get BGInfo 파일
      • 센서 유형: 만들려는 센서 유형을 선택합니다. 이 예에서는 센서입니다.
      • 설명: 이 센서의 기능을 설명합니다.
      • 스크립트: 아래 스크립트를 스크립트 필드에 복사하고 필요에 따라 편집합니다.
      • 센서 유형: 프로브의 답변이 처리되는 방법을 결정합니다. 이 예에서는 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"
       
       });