Ad Widget

Collapse

Zabbix API. api_jsocrpc.php просто белый экран

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • inikulin
    Junior Member
    • Jun 2017
    • 8

    #1

    Zabbix API. api_jsocrpc.php просто белый экран

    Приветствую.
    Начинаю изучать Zabbix API. при переходе по ссылке http://<IP адрес сервера>/zabbix/api_jsonrpc.php просто белый экран выходит.
    и вообще не понятно, куда писать все эти скрипты, которые из примеров в документации https://www.zabbix.com/documentation/3.2/ru/manual/api
    Только начинаю разбирать с API в принципе. Нужен клиент какой-то для HTTP запросов? если да, то какой и где его устанавливать и как?
    Помогите, уже 3 день пытаюсь нагуглить и ничего не нагугливается!!!!
    заранее огромное спасибо)))
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Originally posted by inikulin
    и вообще не понятно, куда писать все эти скрипты, которые из примеров в документации
    Например в perl:

    Code:
    #!/usr/bin/perl
    #
    # Show Zabbix Host's interfaces
    #
    # Created 12 Oct 2016 by sadman
    #
    
    use strict;
    use warnings;
    use Data::Dumper;
    use POSIX;
    use IO::Socket;
    use LWP ();
    use JSON::XS ("decode_json");
    
    my ($zbxUser, $zbxPass, $zbxAPI, $zbxData, $ua, $response, $authToken, $hostName);
    
    # Who have access to API
    $zbxUser='Admin'; #Make user with API access rights and put name here
    # His pass
    $zbxPass='zabbix'; #Make user with API access rights and put password here
    # API location
    $zbxAPI='http://localhost/zabbix/api_jsonrpc.php';
    
    $hostName="server.network.local";
    
    # Do some magic with Zabbix API
    $ua = LWP::UserAgent-> new('cookie_jar' => {}, 'agent' => "Zabbuino helper (perl engine)");
    $zbxData = "{\"params\": {\"password\": \"$zbxPass\", \"user\": \"$zbxUser\"}, \"jsonrpc\":\"2.0\", \"method\": \"user.login\", \"id\": 0}";
    $response = $ua->post($zbxAPI, 'Content_type' => 'application/json-rpc', 'Content' => $zbxData);
    $zbxData = decode_json($response->{'_content'});
    $authToken = $zbxData -> {'result'};
    #print $authToken;
    
    $zbxData = "{\"jsonrpc\": \"2.0\", \"method\": \"host.get\", \"params\": {\"output\": [\"hostid\", \"host\"], \"selectInterfaces\": [\"ip\", \"type\", \"dns\", \"useip\"], \"filter\": {\"host\": [\"$hostName\"]} }, \"auth\":\"$authToken\", \"id\": 1}";
    $response = $ua->post($zbxAPI, 'Content_type' => 'application/json-rpc', 'Content' => $zbxData);
    #print Dumper $response;
    $zbxData = decode_json($response->{'_content'});
    #print Dumper $zbxData;
    foreach (@{$zbxData -> {'result'}}) {
      print "Host (id): $_->{'host'} ($_->{'hostid'})\n";
      foreach (@{$_->{'interfaces'}}) {
        if ($_->{'useip'}) {
           print "#ADDR: $_->{'ip'}, #TYPE: $_->{'type'}\n", ;
        } else {
           print "#ADDR: $_->{'dns'}, #TYPE: $_->{'type'}\n", ;
        }
      }
    }

    Comment

    • inikulin
      Junior Member
      • Jun 2017
      • 8

      #3
      Originally posted by sadman
      Например в perl:

      Code:
      #!/usr/bin/perl
      #
      # show zabbix host's interfaces
      #
      # created 12 oct 2016 by sadman
      #
      
      use strict;
      use warnings;
      use data::dumper;
      use posix;
      use io::socket;
      use lwp ();
      use json::xs ("decode_json");
      
      my ($zbxuser, $zbxpass, $zbxapi, $zbxdata, $ua, $response, $authtoken, $hostname);
      
      # who have access to api
      $zbxuser='admin'; #make user with api access rights and put name here
      # his pass
      $zbxpass='zabbix'; #make user with api access rights and put password here
      # api location
      $zbxapi='http://localhost/zabbix/api_jsonrpc.php';
      
      $hostname="server.network.local";
      
      # do some magic with zabbix api
      $ua = lwp::useragent-> new('cookie_jar' => {}, 'agent' => "zabbuino helper (perl engine)");
      $zbxdata = "{\"params\": {\"password\": \"$zbxpass\", \"user\": \"$zbxuser\"}, \"jsonrpc\":\"2.0\", \"method\": \"user.login\", \"id\": 0}";
      $response = $ua->post($zbxapi, 'content_type' => 'application/json-rpc', 'content' => $zbxdata);
      $zbxdata = decode_json($response->{'_content'});
      $authtoken = $zbxdata -> {'result'};
      #print $authtoken;
      
      $zbxdata = "{\"jsonrpc\": \"2.0\", \"method\": \"host.get\", \"params\": {\"output\": [\"hostid\", \"host\"], \"selectinterfaces\": [\"ip\", \"type\", \"dns\", \"useip\"], \"filter\": {\"host\": [\"$hostname\"]} }, \"auth\":\"$authtoken\", \"id\": 1}";
      $response = $ua->post($zbxapi, 'content_type' => 'application/json-rpc', 'content' => $zbxdata);
      #print dumper $response;
      $zbxdata = decode_json($response->{'_content'});
      #print dumper $zbxdata;
      foreach (@{$zbxdata -> {'result'}}) {
        print "host (id): $_->{'host'} ($_->{'hostid'})\n";
        foreach (@{$_->{'interfaces'}}) {
          if ($_->{'useip'}) {
             print "#addr: $_->{'ip'}, #type: $_->{'type'}\n", ;
          } else {
             print "#addr: $_->{'dns'}, #type: $_->{'type'}\n", ;
          }
        }
      }
      Так куда это все прописать?

      Comment

      • sadman
        Senior Member
        • Dec 2010
        • 1611

        #4
        Originally posted by inikulin
        Так куда это все прописать?
        В смысле - куда? А куда вы прописываете скрипты на shell/perl/php/python ?

        Comment

        • inikulin
          Junior Member
          • Jun 2017
          • 8

          #5
          Originally posted by sadman
          В смысле - куда? А куда вы прописываете скрипты на shell/perl/php/python ?
          Видимо вы не поняли степени моих знаний
          Я только начал изучать API, точнее у меня есть только понимание, что это такое и что есть скрипты, которые прописываются и выполняются.
          А вот где прописываются и выполняются не особо знаю.
          Ну к примеру, если прогать на JS то есть компилятор какой либо, среда и тд. пишешь скрипт нажимаешь пуск и вуаля сразу видно что ты сделал.
          А вот как обстоят дела с API? этот вопрос наверное для начало не к zabbix api, а просто к API.

          Comment

          • inikulin
            Junior Member
            • Jun 2017
            • 8

            #6
            Сразу прошу прощения за тупость и навязчивость)))

            Comment

            • sadman
              Senior Member
              • Dec 2010
              • 1611

              #7
              Originally posted by inikulin
              Видимо вы не поняли степени моих знаний
              И что вы предлагаете - прочитать вам курс "Perl за 24 часа"?

              Вам нужно сделать HTTP POST кода из примера в http://<IP адрес сервера>/zabbix/api_jsonrpc.php, результат распарсить и использовать. А чем вы это будете делать - перлом, пхп и C++ - дело десятое. На чем умеете писать - тем и пользуйтесь.

              Comment

              Working...