我有一个由 Nagios 使用“check_nrpe”调用的自定义 Powershell 脚本。目前在 Nagios 上显示检查结果时,所有带有特殊字符(如“è”、“é”或“à”的检查结果输出消息都无法正确显示。
如何让那些正确显示?
检查命令
$USER1$/check_nrpe -H server.tld -c check_foo -a 7 7 7
nsclient.ini 上的脚本调用
[/settings/external scripts/scripts]
check_foo = cmd /c echo X:\scripts_\check-foo.ps1 -arg1 "$ARG1$" -arg2 "$ARG2$" -arg3 "$ARG3$"; exit($lastexitcode) | powershell.exe -command -
预期结果
CRITICAL - Vérification échouée
实际结果
# UTF-8 BOM (GUI)
CRITICAL - Vrification choue
# UTF-8 BOM (CLI)
CRITICAL - V,rification ,choue,
# UTF-8 (GUI)
CRITICAL - VǸrification ǸchoueǸ
目前,我的 Powershell 脚本是从 Linux CentOS 7 监控机器和目标服务器(Windows 2016 Server)上的 NSClient++ 远程调用的“check_nrpe”。脚本 itelf 被编码为“UTF-8 BOM”。
禁用您的 nsclient.ini 编码 utf8
在您的脚本中使用
使用 : (而不是 write-output 或 write-host) 输出结果
为我工作 ,从这里拿起
更好的解决方案如上所述在 nsclient.ini 中禁用 utf8 编码
并在 nsclient.ini 中修改包装 ps1 脚本