Ad Widget

Collapse

Зависимость триггеров api

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • kiruka4
    Junior Member
    • Nov 2014
    • 12

    #1

    Зависимость триггеров api

    Добрый день. У метода trigger.get есть параметр selectDependencies. Я пишу скрипт на php, который должен вывести содержание поля dependencies.

    Скрипт:
    Code:
    #!/usr/bin/php
    
    <?php
    
    // load ZabbixApi
    require 'ZabbixApiAbstract.class.php';
    require 'ZabbixApi.class.php';
    
    try 
    {
    
    	// connect to Zabbix API
    	$api = new ZabbixApi('https://zabbix.it.loc/n5/api_jsonrpc.php',FALSE, FALSE);
    
    	$trigger = $api->triggerGet(array('selectDependencies' =>'extend' ));
    	foreach ($trigger as $depend)
    		echo $depend->dependencies."\n";
    } 
    
    catch(Exception $e) 
    {
    
    	// Exception in ZabbixApi catched
    	echo $e->getMessage();
    }
    
    ?>
    Но получаю ошибку : " PHP Notice: Array to string conversion on line 17".

    Причем, не используя Php

    Code:
    #!/bin/bash
    curl -i -k -X POST -H 'Content-Type: application/json-rpc' -d '
    {
    	"jsonrpc": "2.0",
    	"method": "trigger.get",
    	"params": {
    
    "selectDependencies":"extend",
    
    "output":"dependencies"
    	},
    	"id": 1,
    	"auth":"7d834ccc5988b4f531087290cadf97c5"
    }' https://zabbix.it.loc/n5/api_jsonrpc.php
    получаю то, что спрашиваю:"{"triggerid":"500500000017814","depende ncies":[]}],"id":1}"

    Подскажите, что я делаю не так, пожалуйста.
  • aib
    Senior Member
    • Jan 2014
    • 1615

    #2
    Но получаю ошибку : " PHP Notice: Array to string conversion on line 17".
    Поправьте меня, если я ошибаюсь - но тут скорее ошибка преобразования массива (которым, на самом деле, является "поле" Dependencies) в строку для вывода на экран/в файл.
    Sincerely yours,
    Aleksey

    Comment

    • kiruka4
      Junior Member
      • Nov 2014
      • 12

      #3
      Да, Вы правы. С этим разобрался. спасибо.
      Научил выводить айди триггеров c зависимостью, то есть те, у которых поле dependencies заполнено
      Code:
      foreach ($trigger as $depend) {
           foreach (($depend->dependencies) as $key)
           echo $depend->triggerid."\n";
      }
      Но никак не могу додумать как сделать обратную операцию. Как вывести все триггеры, у которых поле dependencies пустое?
      Last edited by kiruka4; 13-11-2014, 10:14.

      Comment

      • kiruka4
        Junior Member
        • Nov 2014
        • 12

        #4
        Сам себе отвечу) Получилось. Если кому-нибудь будет нужно, вот код:
        Code:
        #!/usr/bin/php
        
        <?php
        
        require 'ZabbixApiAbstract.class.php';
        require 'ZabbixApi.class.php';
        
        try 
        {
        
        $api = new ZabbixApi('https://zabbix.it.loc/n5/api_jsonrpc.php',FALSE, FALSE);
        
        $trigger = $api->triggerGet(array('filter' => array('host' => 'VMTESTPMN' , 'flags' => '4'), 'selectDependencies' =>'extend'));
        
        	foreach ($trigger as $depend) 
        	{		
        		if ($depend->dependencies) 
        		{
        			continue;
        		}
        		else
        		{
        			print_r($depend->dependencies);
        			echo $depend->triggerid."\n";
        		}
        			
        	}
        }
        catch(Exception $e) 
        {
        
        	// Exception in ZabbixApi catched
        	echo $e->getMessage();
        }
        
        ?>
        Выводит id только тех триггеров, у которых нет зависимости от других. Тобиш поле dependencies у них пустое.

        Comment

        Working...