Ad Widget

Collapse

api php host.create

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Malissa
    Junior Member
    • Dec 2018
    • 13

    #1

    api php host.create

    Добрый день

    Пытаюсь на PHP при помощи api создать узел сети при помощи JSON

    Пишу так:

    PHP Code:
    ...
    $interfaces = array (
    'type'=>1,
    'main'=>1,
    'userip'=>1,
    'ip'=>"$host",
    'dns'=>"",
    'port'=>"161"
    );

    $groups = array (
    'groupid'=>$group_id
    );

    $params = array (
    'host'=>"$host",
    'interfaces'=>$interfaces,
    'groups'=>$groups,
    'inventory_mode'=>0
    );

    $data = array (
    'jsonrpc'=>"2.0",
    'method'=>"host.create",
    'params' => $params,
    'id'=>"$id",
    'auth'=>"$key"
    );
    ... 
    в ответ выдаёт ошибку No permissions to referred object or it does not exist!

    в теме https://www.zabbix.com/forum/in-russ...rl-host-create описана похожая проблема и там предлагают внести в скобки id группы

    меняю код на:

    PHP Code:
    ...
    $groups = array (
    'groupid'=>$group_id
    );

    $params = array (
    'host'=>"$host",
    'interfaces'=>$interfaces,
    'groups'=>[$groups],
    'inventory_mode'=>0
    );
    ... 
    и ошибка меняется на Incorrect arguments passed to function

    Может кто подсказать что надо исправить что бы создать узел сети?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3406

    #2
    А чему равно $group_id?
    Там реально ID (не имя!) нужной группы хостов, на редактирование которой есть права у пользователя, от имени которого идёт обращение к API?

    Comment

    • Malissa
      Junior Member
      • Dec 2018
      • 13

      #3
      Если без скобок, то формируется такой запрос:

      PHP Code:
      {"jsonrpc":"2.0","method":"host.create","params":{"host":"192.168.1.1","interfaces":{"type":1,"main":1,"userip":1,"ip":"192.168.1.1"","dns":"","port":"161"},"groups":{"groupid":15},"inventory_mode":0},"id":"3","auth":"0617a7bd527021e5db9eeebe10b51310"} 

      в таблице hstgrp есть группа с id 15 и есть узлы сети, которые ее используют, добавленные через веб. при просмотре группы через веб в браузере то же пишет такой id так что маловероятно что id неправильные

      попытки использовать другие id не помогают

      пользователь используется admin у которого неограниченные права
      Last edited by Malissa; 04-02-2021, 08:53.

      Comment

      • Kos
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • Aug 2015
        • 3406

        #4
        Если сравнивать Ваш JSON с примерами в документации (кстати, какая версия сервера у Вас?), то видна разница в следующих мелочах:
        • в примерах ID группы заключено в кавычки (как строка);
        • порт 161 - стандартный для SNMP, но "type":1 для интерфейса - это тип для агента Zabbix (стандартный порт - 10050). Для типа интерфейса "SNMP" используется "type":2 и дополнительный блок "details" (как минимум, версия SNMP и креденшиалы - community name или securityname). Хотя вряд ли из-за этого могло выдавать ошибку - скорее, создало бы хост с некорректным интерфейсом.

        Comment

        • Malissa
          Junior Member
          • Dec 2018
          • 13

          #5
          версия забикса 4.0.0

          В таблице hosts_groups поле groupid имеет тип bigint(20) в связи с чем был сделан вывод что объявлять строкой переменую неправильно

          Но если поместить groupid в кавычки как строку результат не меняется

          PHP Code:
          {"jsonrpc":"2.0","method":"host.create","params":{"host":"192.168.1.1","interfaces":{"type":2,"main":1,"userip":1,"ip":"192.168.1.1"","dns":"","port":"161"},"groups":{"groupid":"15"},"inventory_mode":0},"id":"3","auth":"0617a7bd527021e5db9eeebe10b51310"} 

          все равно выдает ошибку No permissions to referred object or it does not exist!

          Comment

          • Kos
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • Aug 2015
            • 3406

            #6
            Ещё в пропертях интерфейса опечатка. Не "userip", а "useip".
            И после IP-адреса лишняя кавычка.
            Впрочем, эти ошибки были и в изначальных версиях JSON-а.

            Comment

            • Malissa
              Junior Member
              • Dec 2018
              • 13

              #7
              С лишней кавычкой после ip просто опечатка при смене настоящего ip.

              Исправление userip на useip со скобками в группе "groups":[{"groupid":"15"}] помогло убрать ошибку

              Огромное спасибо за помощь
              Last edited by Malissa; 05-02-2021, 13:27.

              Comment

              Working...