Ad Widget

Collapse

Unification du parc GLPI et Zabbix

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • tiramiseb
    Senior Member
    • Sep 2012
    • 427

    #31
    Ça c'est une erreur basique.

    Il te dit que le fichier PhpZabbixApi-2.4.5/build/ZabbixApi.class.php n'existe pas.
    es-tu sûr que dans le même répertoire que ton script tu as un répertoire PhpZabbixApi-2.4.5, que dans celui-ci tu as un répertoire build et que dans ce dernier tu as un fichier ZabbixApi.class.php ?
    Sinon, peut-être que PHP ne peut pas importer quand le répertoire contient des points dans son nom... En Python par exemple, on ne peut pas avoir de point dans le nom d'un module que l'on importe...

    Par ailleurs, ce qui est conseillé dans la doc de la lib (https://github.com/confirm/PhpZabbixApi#download) c'est de prendre les fichiers du sous-répertoire build et de les mettre dans un répertoire lib au même niveau que ton script, auquel cas tu fais appel à lib/ZabbixApi.class.php.
    Last edited by tiramiseb; 29-05-2017, 17:29.
    Traducteur principal de Zabbix en français ces derniers temps - Blog personnel - Boutique de domotique "DIY"

    Comment

    • slap
      Member
      • May 2017
      • 31

      #32
      Le chemin est bien correct.
      J'ai copié ZabbixApiAbstract.class.php & ZabbixApi.class.php dans le répertoire lib, comme indiqué dans la doc, en changeant le chemin dans le script, j'ai la même erreur.

      Comment

      • tiramiseb
        Senior Member
        • Sep 2012
        • 427

        #33
        Là comme ça je ne saurais pas t'en dire plus. Si c'est pas un problème de chemin ou de nom de fichier, c'est peut-être un problème de droits... En tout cas ça me semble plus ressembler à un problème bas niveau, fichiers, droits, etc, qu'à un truc lié au langage lui-même.

        Si j'avais la main sur le serveur je pourrais certainement trouver le problème rapidement, mais comme ça au travers d'un forum c'est trop difficile.
        Traducteur principal de Zabbix en français ces derniers temps - Blog personnel - Boutique de domotique "DIY"

        Comment

        • slap
          Member
          • May 2017
          • 31

          #34
          Ok j'ai du nouveau, je sais pas si ca va me faire avancer mais bon.
          L'appel à la librairie avec le chemin lib/ZabbixApi.class.php est bon puisque si je change ce chemin, la page web ne répond pas.

          Voici mon code:
          PHP Code:
          <?php
          $zabbix_api_url
          ="http://10.0.240.6/api_jsonrpc.php";
          $ZABBIX_ADMIN_LOGIN="Admin";
          $ZABBIX_ADMIN_PW="zabbix";

          require_once 
          'lib/ZabbixApi.class.php';
          use 
          ZabbixApi\ZabbixApi;

          try
          {
              
          $api = new ZabbixApi($zabbix_api_url$ZABBIX_ADMIN_LOGIN$ZABBIX_ADMIN_PW);
          }
          catch(
          Exception $e)
          {
              echo 
          $e->getMessage();
          }

          /*-------Iinitialisation de l'API Zabbix-------*/
          $json2='{
              "jsonrpc": "2.0",
              "method": "user.login",
              "params": {
                  "user": "'
          .$ZABBIX_ADMIN_LOGIN.'",
                  "password":  "'
          .$ZABBIX_ADMIN_PW.'"
              },
              "id": 1,
              "auth": null
          }'
          ;

          /*-------Get PC - Zabbix-------*/
          $ch2 curl_init();

          curl_setopt($ch2CURLOPT_URL$zabbix_api_url);
          curl_setopt($ch2CURLOPT_POST1);
          curl_setopt($ch2CURLOPT_POSTFIELDS$json2);
          //Avec la ligne suivante curl, retournera la valeur resultat ou false si erreur
          curl_setopt($ch2CURLOPT_RETURNTRANSFERtrue);

          $json2=curl_exec($ch2);
          curl_close ($ch2);

          echo 
          "Resultat en JSON: ";
          var_dump($json2);

          $obj2 json_decode($json2,true);

          echo 
          "Resultat JSON converti en une variable PHP: ";
          var_dump($obj2);

          die(
          "fin");
          ?>
          J'obtiens:
          Could not connect to "http://10.0.240.6/api_jsonrpc.php"
          Resultat en JSON: string(218) "
          Found

          The document has moved here.

          "
          Resultat JSON converti en une variable PHP: NULL

          fin

          Comment

          • tiramiseb
            Senior Member
            • Sep 2012
            • 427

            #35
            Que donne la commande suivante, exécutée en ligne de commande sur ton serveur GLPI ?
            Code:
            HEAD http://10.0.240.6/api_jsonrpc.php
            Traducteur principal de Zabbix en français ces derniers temps - Blog personnel - Boutique de domotique "DIY"

            Comment

            • slap
              Member
              • May 2017
              • 31

              #36
              500 Can't connect to 10.0.240.6:443 (certificate verify failed)
              Content-Type: text/plain
              Client-Date: Tue, 30 May 2017 08:34:24 GMT
              Client-Warning: Internal response
              Peut être un problème de port? (ou le changer?)
              Où de certificat ?

              Comment

              • tiramiseb
                Senior Member
                • Sep 2012
                • 427

                #37
                En HTTP tu as une redirection vers le HTTPS.
                Donc tu dois utiliser :
                Code:
                $zabbix_api_url="https://10.0.240.6/api_jsonrpc.php";
                De plus, vu que ton certificat SSL est invalide (ce qui est plutôt habituel quand on tape directement sur l'adresse IP et pas sur un nom), il faut lui dire d'accepter le certificat.

                En lisant https://github.com/confirm/PhpZabbix...ment-217018709, il me semble comprendre qu'il faut que tu fasses :

                Code:
                $zabbix_api_url="http://10.0.240.6/api_jsonrpc.php"; 
                $ZABBIX_ADMIN_LOGIN="Admin"; 
                $ZABBIX_ADMIN_PW="zabbix"; 
                $zabbix_context = array(
                    'verify_peer' => FALSE,
                    'verify_peer_name' => FALSE
                );
                
                [...]
                
                $api = new ZabbixApi($zabbix_api_url, $ZABBIX_ADMIN_LOGIN, $ZABBIX_ADMIN_PW, '', '', '', $zabbix_context); 
                }
                ... mais n'étant pas très connaisseur de PHP, je ne sais pas si ma proposition est juste.
                Traducteur principal de Zabbix en français ces derniers temps - Blog personnel - Boutique de domotique "DIY"

                Comment

                • slap
                  Member
                  • May 2017
                  • 31

                  #38
                  Si je passe mon adresse en https, la page me retourne :
                  Resultat en JSON: bool(false)
                  Resultat JSON converti en une variable PHP: NULL

                  fin
                  J'ai fais la modification avec ta proposition mais rien n'a l'air de changer..
                  Je vais me renseigner sur le certificat SSL.

                  Comment

                  • tiramiseb
                    Senior Member
                    • Sep 2012
                    • 427

                    #39
                    Ah bon, "rien n'a l'air de changer.." ?

                    Pourtant tu es passé de :
                    Code:
                    string(218) "
                    Found
                    
                    The document has moved here.
                    
                    "
                    à :
                    Code:
                    bool(false)
                    Pour moi, ce changement n'est pas égal à "rien".

                    --

                    Je propose d'enlever le contexte : sans ce contexte, ça devrait retourner une erreur de certificat.
                    Code:
                    $api = new ZabbixApi($zabbix_api_url, $ZABBIX_ADMIN_LOGIN, $ZABBIX_ADMIN_PW);
                    ... si ça donne une erreur de certificat, ça veut dire qu'avec le contexte ça se connecte bien et que c'est peut-être l'API qui te répond "bool(false)".
                    Traducteur principal de Zabbix en français ces derniers temps - Blog personnel - Boutique de domotique "DIY"

                    Comment

                    • slap
                      Member
                      • May 2017
                      • 31

                      #40
                      Oui ce changement est uniquement dû au passage de http à https.
                      Rien n'a changé au niveau du certificat et de l'erreur précédente.

                      Code :
                      $zabbix_api_url="https://10.0.240.6/api_jsonrpc.php";
                      $ZABBIX_ADMIN_LOGIN="Admin";
                      $ZABBIX_ADMIN_PW="zabbix";

                      require_once 'lib/ZabbixApi.class.php';
                      use ZabbixApi\ZabbixApi;

                      try
                      {
                      // connect to Zabbix API
                      $api = new ZabbixApi($zabbix_api_url, $ZABBIX_ADMIN_LOGIN, $ZABBIX_ADMIN_PW);
                      Réponse:
                      Could not connect to "https://10.0.240.6/api_jsonrpc.php"
                      Resultat en JSON: bool(false)
                      Resultat JSON converti en une variable PHP: NULL

                      fin
                      Last edited by slap; 30-05-2017, 11:07.

                      Comment

                      • tiramiseb
                        Senior Member
                        • Sep 2012
                        • 427

                        #41
                        EEEEEEEEEh mais attends attends, je viens de voir !

                        Tu initialises la lib et derrière tu te connectes quand même à la main avec Curl. C'est un peu couillon...

                        Il faut enlever tout ton bordel avec les curl et utiliser directement l'objet $api.
                        C'est tout l'intérêt de la lib, ne pas te prendre la tête avec ces trucs-là !
                        Last edited by tiramiseb; 30-05-2017, 11:12.
                        Traducteur principal de Zabbix en français ces derniers temps - Blog personnel - Boutique de domotique "DIY"

                        Comment

                        • tiramiseb
                          Senior Member
                          • Sep 2012
                          • 427

                          #42
                          C'est expliqué là : https://github.com/confirm/PhpZabbixApi#using-the-thing

                          J'imagine que ça doit donner un truc comme ça :
                          Code:
                          <?php 
                          
                          require_once 'lib/ZabbixApi.class.php'; 
                          use ZabbixApi\ZabbixApi; 
                          
                          $zabbix_api_url="https://10.0.240.6/api_jsonrpc.php"; 
                          $zabbix_admin_login="Admin"; 
                          $zabbix_admin_pw="zabbix"; 
                          $zabbix_context = array(
                              'verify_peer' => FALSE,
                              'verify_peer_name' => FALSE
                          );
                          
                          // initialize the API
                          try 
                          { 
                              $api = new ZabbixApi($zabbix_api_url, $zabbix_admin_login, $zabbix_admin_pw, '', '', '', $zabbix_context); 
                          } 
                          catch(Exception $e) 
                          { 
                              echo $e->getMessage(); 
                          };
                          
                          // get all graphs
                          $graphs = $api->graphGet();
                          
                          // print all graph IDs
                          foreach($graphs as $graph)
                            echo $graph->graphid."\n";
                          
                          ?>
                          Last edited by tiramiseb; 30-05-2017, 11:24.
                          Traducteur principal de Zabbix en français ces derniers temps - Blog personnel - Boutique de domotique "DIY"

                          Comment

                          • slap
                            Member
                            • May 2017
                            • 31

                            #43
                            Ah ! Je ne savais pas. Y a t-il une possibilité pour que je t'envoies mon script complet (ne passe pas ici) pour être sur qu'il n'y ai pas d'autres collisions de ce genre qui pourrait fausser l'accès ?

                            Comment

                            • tiramiseb
                              Senior Member
                              • Sep 2012
                              • 427

                              #44
                              Si tu veux que j'étudie ton script, c'est un service professionnel payant. C'est mon taff qui me permet de nourrir mes enfants.

                              Mon aide sur ce forum est une partie de ma contribution à l'open source, mais ça se limite aux interventions publiques et ça s'arrête quand je décide que ça devient trop pointu.
                              Traducteur principal de Zabbix en français ces derniers temps - Blog personnel - Boutique de domotique "DIY"

                              Comment

                              • tiramiseb
                                Senior Member
                                • Sep 2012
                                • 427

                                #45
                                Originally posted by slap
                                Ah ! Je ne savais pas.
                                Pas étonnant que tu croyais que ça allait te prendre la tête !

                                Le but de toute bibliothèque, c'est de te simplifier la vie, pour que tu ne fasses pas les choses "à la main".

                                Il faut utiliser des bibliothèques autant que possible, pour être efficace...

                                ----

                                Essaye déjà le code que j'ai donné plus haut, pour voir si ça donne quelque chose de probant...
                                Traducteur principal de Zabbix en français ces derniers temps - Blog personnel - Boutique de domotique "DIY"

                                Comment

                                Working...