Ad Widget

Collapse

Проблемы с кодировкой при добавление host-а ч&

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dr_wut
    Junior Member
    • Jul 2015
    • 4

    #1

    Проблемы с кодировкой при добавление host-а ч&

    Добрый день всех
    Возникла проблема с кодировками при добавлении нового host-а через API.
    Добавляю через powershell, windows 2008 R2. Версия Zabbix - 2.4.0. Все добавляется нормально, но если в параметре name поставить русские буквы, то в они заменяются на знаки вопроса. А если тоже самое сделать через web - то все хорошо.

    Подскажите, может кто сталкивался?
    ************************************************** ************************************************** **
    Ответ нашел сам. Может кому потом поможет.
    Для того, чтобы нормально отображались русские символы при работе с Zabbix через PowerShell в конце нужно массив, который вы будете отдавать как json преобразовать в utf-8.
    Сделать это можно с помощью команды:
    [System.Text.Encoding]::UTF8.GetBytes($json_array)

    Вот пример скрипта:
    Code:
    $json_array = [System.Text.Encoding]::UTF8.GetBytes((@"
        {
            "jsonrpc": "2.0",
            "method": "host.update",
            "params": {
                "hostid": "%hostid%",
                "name": "%name%",
                "interfaces": [
                    {
                        "type": 1,
                        "main": 1,
                        "useip": 1,
                        "ip": "%ip%",
                        "dns": "",
                        "port": "10050"
                    }
                ],
                "groups": [
                    {
                        "groupid": "%groupid%"
                    }
                ],
                "templates": [
                    {
                        "templateid": "10140"
                    }
                ]
            },
            "auth": "%authid%",
            "id": 1
        }    
    "@).Replace("%hostid%",($info.hostid)).replace("%name%",$market_info.name).replace("%ip%",$ip).replace("%groupid%",$GroupID).Replace("%authid%",(Get-ZabbixConnect)))
    Invoke-RestMethod -Method Post -Uri "$resource" -Body $json_array -ContentType application/json-rpc
    Использую PowerShell 4.0
    Last edited by dr_wut; 07-07-2015, 21:06.
  • dr_wut
    Junior Member
    • Jul 2015
    • 4

    #2
    Может кому потом поможет
    Для того, чтобы нормально отображались русские символы при работе с Zabbix через PowerShell в конце нужно массив, который вы будете отдавать как json преобразовать в utf-8.
    Сделать это можно с помощью команды:
    [System.Text.Encoding]::UTF8.GetBytes($json_array)

    Вот пример скрипта:
    Code:
    $json_array = [System.Text.Encoding]::UTF8.GetBytes((@"
        {
            "jsonrpc": "2.0",
            "method": "host.update",
            "params": {
                "hostid": "%hostid%",
                "name": "%name%",
                "interfaces": [
                    {
                        "type": 1,
                        "main": 1,
                        "useip": 1,
                        "ip": "%ip%",
                        "dns": "",
                        "port": "10050"
                    }
                ],
                "groups": [
                    {
                        "groupid": "%groupid%"
                    }
                ],
                "templates": [
                    {
                        "templateid": "10140"
                    }
                ]
            },
            "auth": "%authid%",
            "id": 1
        }    
    "@).Replace("%hostid%",($info.hostid)).replace("%name%",$market_info.name).replace("%ip%",$ip).replace("%groupid%",$GroupID).Replace("%authid%",(Get-ZabbixConnect)))
    Invoke-RestMethod -Method Post -Uri "$resource" -Body $json_array -ContentType application/json-rpc
    Использую PowerShell 4.0

    Comment

    • sadman
      Senior Member
      • Dec 2010
      • 1611

      #3
      А этот UTF8.GetBytes решает проблему с результатами WMI-запросов? Там тоже полный бардак - половина данных на английском, половина на русском и кракозябрами. Нормальное LLD для Zabbix-а мне так и не удалось сформировать

      Comment

      • dr_wut
        Junior Member
        • Jul 2015
        • 4

        #4
        А в чем именно проблема то?

        Comment

        • sadman
          Senior Member
          • Dec 2010
          • 1611

          #5
          В ответе на wmi-запрос на русской винде встречаются русские значения объектов. Пока в повершелл окне их делаешь - все ок. Как только переходишь к обработке в сценариях - лезет какая-то хрень в консоль.

          Comment

          • dr_wut
            Junior Member
            • Jul 2015
            • 4

            #6
            Да, должно помочь по идее

            Comment

            Working...