Điểm:0

Làm cách nào để hiển thị chính xác các ký tự có dấu trọng âm trong kết quả check_nrpe dựa trên tập lệnh Powershell?

lá cờ ai

Tôi có một tập lệnh Powershell tùy chỉnh được Nagios gọi bằng cách sử dụng "check_nrpe".Hiện tại, tất cả các thông báo xuất kết quả kiểm tra có các ký tự đặc biệt như 'è', 'é' hoặc 'à ' không được hiển thị chính xác khi kết quả kiểm tra được hiển thị trên Nagios.

Làm thế nào để cho phép chúng được hiển thị đúng cách?

kiểm tra lệnh

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

Cuộc gọi tập lệnh trên nsclient.ini

[/settings/external scripts/scripts]
check_foo = cmd /c echo X:\scripts_\check-foo.ps1 -arg1 "$ARG1$" -arg2 "$ARG2$" -arg3 "$ARG3$"; thoát($lastexitcode) | powershell.exe -lệnh -

kết quả mong đợi

CRITICAL - Vérification échouée

Kết quả thực tế

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

# UTF-8 BOM (CLI)
TIÊU CHUẨN - V,rification,choue,

# UTF-8 (GUI)
TIÊU CHUẨN - VǸrification ǸchoueǸ 

Hiện tại, tập lệnh Powershell của tôi được gọi từ xa bằng "check_nrpe" từ máy giám sát Linux CentOS 7 và NSClient++ trên máy chủ đích (Windows 2016 Server). Bản thân tập lệnh được mã hóa thành "UTF-8 BOM".

Archemar avatar
lá cờ mx
bạn đã thử mã hóa nó trong `ISO8859-P1` chưa,
donmelchior avatar
lá cờ ai
@Archemar: Tập lệnh Powershell được mã hóa với đầu ra ISO8859-1: TIÊU CHUẨN - V?rification ?choue?
donmelchior avatar
lá cờ ai
Tôi cũng đã thử thêm "encoding = utf8" vào phần [/settings/NRPE/server] của tệp cấu hình "nsclient.ini" cho NSClient++ trong khi vẫn giữ mã hóa tập lệnh Powershell trong "UTF-8 NOM": Vẫn còn sự cố.
Điểm:1
lá cờ cn

vô hiệu hóa mã hóa nsclient.ini utf8 của bạn

[/settings/NRPE/server]
; mã hóa = utf8

trong kịch bản của bạn sử dụng

[Bảng điều khiển]::OutputEncoding = [System.Text.Encoding]::UTF8

xuất kết quả của bạn bằng: (thay vì đầu ra ghi hoặc máy chủ ghi)

[Bảng điều khiển]::WriteLine("ééé")

làm việc cho tôi đón từ đây

Điểm:0
lá cờ cn

giải pháp tốt hơn tắt mã hóa utf8 trong nsclient.ini như trên

và sửa đổi tập lệnh gói ps1 của bạn trong nsclient.ini

ps1=cmd /c echo Try {$OutputEncoding = [System.Console]::OutputEncoding = [System.Console]::InputEncoding = [System.Text.Encoding]::UTF8;scripts\%SCRIPT% -- %ARGS %; thoát($lastexitcode)} Bắt {echo $_.Exception.Message; thoát 3} | powershell.exe -lệnh -

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.