Puncte:0

Cum să afișați corect caracterele accentuate într-un rezultat check_nrpe bazat pe un script Powershell?

drapel ai

Am un script Powershell personalizat numit de Nagios folosind „check_nrpe”.În prezent, toate mesajele de ieșire ale rezultatelor verificării cu caractere speciale precum „è”, „é” sau „Ô nu sunt afișate corect când rezultatul verificării este afișat pe Nagios.

Cum le permiteți să fie afișate corect?

Verificați comanda

$USER1$/check_nrpe -H server.tld -c check_foo -a 7 7 7  

Apel de script pe nsclient.ini

[/settings/external scripts/scripts]
check_foo = cmd /c echo X:\scripts_\check-foo.ps1 -arg1 "$ARG1$" -arg2 "$ARG2$" -arg3 "$ARG3$"; ieșire($lastexitcode) | powershell.exe -comandă -

Rezultat asteptat

CRITIC - Vérification échouée

Rezultat actual

# UTF-8 BOM (GUI)
CRITIC - Vrification choue

# UTF-8 BOM (CLI)
CRITIC - V,rification ,choue,

# UTF-8 (GUI)
CRITIC - VǸrificare ǸchoueǸ 

În prezent, scriptul meu Powershell este apelat de la distanță cu „check_nrpe” de la mașina de monitorizare Linux CentOS 7 și NSClient++ pe serverul țintă (Windows 2016 Server). Scriptul itelf este codificat ca „UTF-8 BOM”.

Archemar avatar
drapel mx
ai încercat să-l codificați în `ISO8859-P1`,
donmelchior avatar
drapel ai
@Archemar: Script Powershell codificat cu ieșiri ISO8859-1: CRITIC - V?rification ?choue?
donmelchior avatar
drapel ai
De asemenea, am încercat să adaug „encoding = utf8” în secțiunea [/settings/NRPE/server] din fișierul de configurare „nsclient.ini” pentru NSClient++, păstrând în același timp codificarea scriptului Powershell în „UTF-8 NOM”: Problema rămâne.
Puncte:1
drapel cn

dezactivați codarea nsclient.ini utf8

[/settings/NRPE/server]
;coding = utf8

în utilizarea scriptului dvs

[Consola]::OutputEncoding = [System.Text.Encoding]::UTF8

scoateți rezultatul cu: (în loc de write-output sau write-host)

[Consola]::WriteLine("ééé")

merge pentru mine ridica de aici

Puncte:0
drapel cn

solutie mai buna dezactivați codarea utf8 în nsclient.ini ca mai sus

și modificați-vă scripturile de împachetare ps1 în nsclient.ini

ps1=cmd /c echo Încercați {$OutputEncoding = [System.Console]::OutputEncoding = [System.Console]::InputEncoding = [System.Text.Encoding]::UTF8;scripts\%SCRIPT% -- %ARGS %; exit($lastexitcode)} Prinde {echo $_.Exception.Message; ieșirea 3} | powershell.exe -comandă -

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.