Créer un package de module d’extension ACC
Créez un package de module d’extension Agent Client Collector (ACC) qui inclut le script PowerShell définissant l’action de rattrapage, un script Ruby et une liste d’autorisation pour permettre l’exécution de l’action de rattrapage sur un appareil de point de terminaison.
Avant de commencer
Rôle requis : admin
Procédure
-
Créez un dossier racine pour le module d’extension ACC sur votre ordinateur local et nommez-le.
Par exemple, acc-dex-custom.
- Dans le dossier racine, créez deux sous-dossiers nommés liste d’autorisation et corbeille.
-
Créez un script PowerShell à l’aide de PowerShell ou de commandes d’invite de commande pour définir l’action de rattrapage à exécuter sur un appareil de point de terminaison.
-
Dans le dossier de la corbeille , créez un fichier .ps1 et nommez-le avec l’extension .ps1 .
Par exemple, CustomScript.ps1
-
Ouvrez le fichier .ps1 et ajoutez les commandes.
Par exemple, l’exemple de fichier .ps1 suivant définit une action de rattrapage personnalisée à l’aide de commandes permettant d’arrêter et de redémarrer le processus W32Time, de mettre en pause et de redémarrer le service Spooler sur un appareil.
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 spoolerRemarque :Vous pouvez configurer le script PowerShell pour accepter les paramètres d’entrée définis dans l’instance pendant l’exécution ServiceNow . - Enregistrez le fichier.
-
Dans le dossier de la corbeille , créez un fichier .ps1 et nommez-le avec l’extension .ps1 .
-
Créez un script Ruby pour appeler le fichier .ps1 à partir de l’instance ServiceNow .
- Dans le dossier de la corbeille , créez un fichier Ruby et nommez-le avec l’extension .rb .
-
Ouvrez le fichier .rb et ajoutez votre code à l’aide de Ruby brut ou de n’importe quel framework Ruby.
Le script Ruby doit inclure la logique pour :
- Appelez le script .ps1 que vous avez créé en vous assurant d’entrer le chemin d’accès correct au fichier.
- Validez si la commande est exécutée avec succès.
- Créez une sortie JSON qui inclut l’état de l’exécution, la sortie et les erreurs, le cas échéant.
-
Exécutez la commande et examinez la sortie pour confirmer si le fichier .ps1 est appelé avec succès ou s’il y a des erreurs.
Par exemple, l’exemple de fichier .rb suivant exécute un fichier .ps1 (CustomScript.ps1) à l’aide de la commande exécuter du module d’extension acc-f-commons, valide si la commande s’exécute correctement et renvoie le résultat 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()Remarque :Si le script PowerShell est configuré pour accepter les paramètres d’entrée de l’instance ServiceNow , le script Ruby transmet ces paramètres au script PowerShell pendant l’exécution.
-
Créez un fichier de liste d’autorisation et spécifiez le script Ruby autorisé pour l’exécution sur les appareils de point de terminaison.
-
Dans le sous-dossier de la liste d’autorisation , créez un fichier de liste JSON d’autorisation.
Par exemple, check-allowlist.json.
- Définissez toutes les conditions, telles que les arguments, à accepter dans le script .rb ou créez une logique personnalisée.
- Enregistrez le fichier.
-
Dans le sous-dossier de la liste d’autorisation , créez un fichier de liste JSON d’autorisation.
-
Générez un fichier tar.gz pour votre dossier de module d’extension ACC à l’aide de n’importe quel utilitaire.
Remarque :Le nom du fichier tar.gz doit correspondre au nom du dossier racine du module d’extension. Par exemple, acc-dex-custom.tar.gz