ACC 플러그인 패키지 생성
정정 작업을 정의하는 PowerShell 스크립트, Ruby 스크립트 및 엔드포인트 장치에서 정정 작업을 실행할 수 있도록 허용 목록이 포함된 (ACC) 플러그인 패키지를 생성합니다 에이전트 클라이언트 수집기 .
시작하기 전에
필요한 역할: 관리자
프로시저
-
로컬 컴퓨터에 ACC 플러그인의 루트 폴더를 만들고 이름을 지정합니다.
예: acc-dex-custom.
- 루트 폴더에서 allowlist 와 bin이라는 두 개의 하위 폴더를 만듭니다.
-
PowerShell 또는 명령 프롬프트 명령을 사용하여 PowerShell 스크립트를 생성하고 엔드포인트 장치에서 실행할 정정 작업을 정의합니다.
-
bin 폴더에서 .ps1 파일을 만들고 이름을 .ps1 확장명으로 지정합니다.
예: CustomScript.ps1
-
.ps1 파일을 열고 명령을 추가합니다.
예를 들어 다음 샘플 .ps1 파일은 장치에서 W32Time 프로세스를 중지 및 시작하고, 스풀러 서비스를 일시 중지 및 다시 시작하는 명령을 사용하여 사용자 지정 정정 작업을 정의합니다.
sc.exe stop w32time $process = Get-Process -Name w32time -ErrorAction SilentlyContinue if ($process) { taskkill /f /t /im w32tm.exe } Start-Sleep -Seconds 5 sc.exe start w32time Start-Process "C:\Windows\System32\w32tm.exe" Start-Sleep -Seconds 5 sc.exe stop spooler sc.exe start spooler주:실행 중에 인스턴스에 정의된 입력 매개변수를 수락하도록 PowerShell 스크립트를 ServiceNow 구성할 수 있습니다. - 파일을 저장합니다.
-
bin 폴더에서 .ps1 파일을 만들고 이름을 .ps1 확장명으로 지정합니다.
-
인스턴스에서 .ps1 파일을 호출하는 Ruby 스크립트를 ServiceNow 만듭니다.
- bin 폴더에서 Ruby 파일을 만들고 .rb 확장자로 이름을 지정합니다.
-
.rb 파일을 열고 일반 Ruby 또는 Ruby 프레임워크를 사용하여 코드를 추가합니다.
Ruby 스크립트에는 다음과 같은 논리가 포함되어야 합니다.
- 만든 .ps1 스크립트를 호출하여 올바른 파일 경로를 입력했는지 확인합니다.
- 명령이 성공적으로 실행되었는지 확인합니다.
- 실행 상태, 출력 및 오류(있는 경우)를 포함하는 출력 JSON 을 생성합니다.
-
명령을 실행하고 출력을 검토하여 .ps1 파일이 성공적으로 호출되었는지 또는 오류가 있는지 확인합니다.
예를 들어, 다음 샘플 .rb 파일은 acc-f-commons 플러그인 실행 명령을 사용하여 .ps1 파일(CustomScript.ps1)을 실행하고, 명령이 성공적으로 실행되는지 확인하고, 결과를 JSON반환합니다.
require "logger" require_relative "../../../acc-f-commons/bin/command_runner.rb" require "json" class CustomScript def initialize() @logger = Logger.new(STDOUT) @cmd_runner = CommandRunner.new @logger.level = "FATAL" end def execute_custom_script() status = "failure" msg = nil data = {} parent_cache_directory = File.expand_path("../..", File.dirname(__FILE__)).gsub(" ", "` ") query = "powershell -ExecutionPolicy Bypass " + parent_cache_directory + "/acc-dex-custom/bin/ps/customScript.ps1" output, error = @cmd_runner.runCmd(query, @logger, "mode con:cols=32766 lines=1 & chcp 65001 > nul & ", true, false) if !error && !output.empty? status = "success" msg = "Successfully ran script" data = output else msg = "Failed - #{error}" end result = { "status" => status, "type" => "device", "metric_type" => "remedial_action", "keys" => "custom_script", "data" => data, "message" => msg } puts JSON.generate(result) end end custom_script = CustomScript.new custom_script.execute_custom_script()주:PowerShell 스크립트가 인스턴스의 입력 매개변수를 ServiceNow 수락하도록 구성된 경우 Ruby 스크립트는 실행 중에 이러한 매개변수를 PowerShell 스크립트에 전달합니다.
-
허용 목록 파일을 생성하고 엔드포인트 장치에서 실행할 수 있는 Ruby 스크립트를 지정합니다.
-
허용 목록 하위 폴더에서 허용 목록 JSON 파일을 만듭니다.
예를 들면 check-allowlist.json입니다.
- .rb 스크립트의 일부로 수락할 인수와 같은 조건을 정의하거나 사용자 지정 논리를 생성합니다.
- 파일을 저장합니다.
-
허용 목록 하위 폴더에서 허용 목록 JSON 파일을 만듭니다.
-
유틸리티를 사용하여 ACC 플러그인 폴더에 대한 tar.gz 파일을 생성합니다.
주:tar.gz 파일 이름은 플러그인 루트 폴더 이름과 일치해야 합니다. 예를 들면 다음과 같습니다acc-dex-custom.tar.gz