При запросе - zabbix_get не может вывести русский язык. При этом сам PowerShell скрипт выводит кириллицу в своей строке. Кодировка файла - UTF8.
Ad Widget
Collapse
Не выводит кириллицу
Collapse
X
-
И вправду, поспешил, извиняюсь!
Здравствуйте!
Версия Zabbix - Zabbix 6.4.8
Версия Zabbbix Agent 2 - 7.0.3
Файл формата txt.
Выполняется такой PowerShell скрипт -
__________________________________________________ _________________________________
$SQLServer = "nameserver"
Invoke-Sqlcmd -ServerInstance $SQLServer -Username "login" -Password "password" -Verbose -TrustServerCertificate -InputFile "C:\Temp\Sql_backup\backup.sql" | Out-File "C:\Temp\Sql_backup\Text2.txt" -Encoding utf8
Get-Content "C:\Temp\Sql_backup\Text2.txt" -Encoding utf8
_________________________________________________ __________________________________
На скриншоте показывает вывод, если вызвать данный скрипт с помощью ключа
zabbix_get -s 127.0.0.1 -k testsql
Еще раз прошу прощение за не полную информацию и еще раз спасибо!Comment
-
К сожалению к сервера тоже не известные символы за место кириллицы.
Вот пример того что выводится -
Comment
-
попробуйте мои советы отсюда: https://www.zabbix.com/forum/in-russ...576#post489576 у меня не возникает проблем с кодировками powershellComment
-
Как раз хотел привести эту ссылку, вы меня опередилипопробуйте мои советы отсюда: https://www.zabbix.com/forum/in-russ...576#post489576 у меня не возникает проблем с кодировками powershell
Comment
-
Загвоздка в том, что PowerShell сам по себе выводит данные как требуется
попробуйте мои советы отсюда: https://www.zabbix.com/forum/in-russian/489400-правило-обнаружения-прототипы-данных-кодировка-и-т-п?p=489576#post489576 у меня не возникает проблем с кодировками powershell
Comment
-
Сохраните результат в файл. Расширение не txt и не html, чтобы автоперекодировщики не перехватили.
Откройте его в любимом hex-редакторе, по кодам определите кодировку.
Проблема может вообще оказаться в отсутствии нужных шрифтов в системе.Comment
-
Как и подсказывают коллеги, на самой машине может все быть как надо, так как для винды это нормальная кодировка, но при разных лишних действиях кодировка, которую вы применили к файлам меняется при выводе данных. На самом деле вывод в файл это лишнее действие, задаете кодировку и сразу читаете, да и объявление переменных тоже можно было бы опустить и завернуть это все в system.run. например такили такCode:system.run[cmd /c chcp 65001 > nul & powershell.exe -c "Invoke-Sqlcmd -ServerInstance 'nameserver' -Username 'login' -Password 'password' -Verbose -TrustServerCertificate -InputFile 'C:\Temp\Sql_backup\backup.sql'"]
В таком случае должны быть включены удаленные команды в конфиге агента. Обычно мне это дает свободу действий, в плане без доступа к машине запускать скрипты и менять их содержимое когда надо.Code:system.run[powershell.exe -c "chcp 65001; Invoke-Sqlcmd -ServerInstance 'nameserver' -Username 'login' -Password 'password' -Verbose -TrustServerCertificate -InputFile 'C:\Temp\Sql_backup\backup.sql'"
А password поместить в макрос типа скрытого текста или секретного хранилища(если есть).
Но весь этот велосипед с powershell, можно было бы заменить простой проверкой типа "Монитор баз данных", выполнить нужный селект и получить стандартный json, который парсится заббиксом на ура.Last edited by Griboed0ff; 22-08-2024, 21:35.Comment
-
Огромное спасибо за совет, попробую!
Но я не такой гуру и мастер zabbixА)
Как вы уже поняли у меня обычный powershell скрипт, который выполняет sql скрипт) Велосипед конечно, но по другому не умею и боюсь спрашивать как правильно все это перенести в json
Comment
-
На сервере\прокси заббикс настраивается odbc драйвер, с учетом того, что у вас mssql, то есть официальная инструкция, а потом просто в интерфейсе заббикса вставите запрос, пользователя и пароль, тип проверки "Монитор баз данных" db.odbc.discovery, на выходе получаете json, далее что угодно.Comment
Comment