51

Re: Unification du parc GLPI et Zabbix

D'accord, merci.

Je vais regarder tout ça et je vais essayé de m'y retrouver..

52

Re: Unification du parc GLPI et Zabbix

Bonjour,

Je me suis penché sur la partie Zabbix du script et j'avoue que je suis un peu perdu..
Je ne connais pas non plus l'API Zabbix mais peut être pouvez-vous me renseigner sur différents points.
- Écrire du JSON dans un script PHP
- Comparer les liste GLPI avec celle de Zabbix
- Ajouter la machine manquante.

Je visualise mal le découpage et les différentes parties du script, et peu d'informations sont disponibles la dessus.
J'ai regardé la documentation Zabbix que vous m'avez fourni précédemment, mais rien de très concluant de mon côté..

Je suis désolé de vous déranger avec ça, mais une aide supplémentaire me ferai bien avancer.

53

Re: Unification du parc GLPI et Zabbix

Écrire du JSON dans un script PHP

$json='{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "'.$ZABBIX_ADMIN_LOGIN.'",
        "password":  "'.$ZABBIX_ADMIN_PW.'"
    },
    "id": 1,
    "auth": null
}';


$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $zabbix_api_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);

curl_exec($ch);

Trouver la panne avant de réparer...
*GLPI 0.90.5+fusion90+1.0+behaviours0.90+reports+fields+appliances+pdf+badges+webservices PHP7.0 Mariadb10
*GLPI 9.1.3 (behaviours+DashBoard+fields+pdf)hebergé sur serveur mutualisé.

54

Re: Unification du parc GLPI et Zabbix

Merci, il faut que je me renseigne sur curl.

55

Re: Unification du parc GLPI et Zabbix

Bonjour,
je bloque sur un point au niveau du json et des tokens.
Ils disent que le code est censé envoyer une réponse sous la forme :

{
    "jsonrpc": "2.0",
    "result": "0424bd59b807674191e7d77572075f33",
    "id": 1
}

Je ne comprend pas ou dois-je récupérer cette réponse et/ou comment l'appeler dans mon script PHP.
As-tu une idée ? smile

56

Re: Unification du parc GLPI et Zabbix

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $zabbix_api_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
//avec la ligne suivante curl retournera la valeur resultat ou false si erreur
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json=curl_exec($ch);
curl_close ($ch);
// returned json string will look like this: {"code":1,"data":"OK"}
echo "<br/>resultat en json<br/>";
print_r($json);

$obj = json_decode($json,true);

echo "<br/>resultat JSON converti en une variable PHP <br/>";
print_r($obj);

Trouver la panne avant de réparer...
*GLPI 0.90.5+fusion90+1.0+behaviours0.90+reports+fields+appliances+pdf+badges+webservices PHP7.0 Mariadb10
*GLPI 9.1.3 (behaviours+DashBoard+fields+pdf)hebergé sur serveur mutualisé.

57

Re: Unification du parc GLPI et Zabbix

$zabbix_api_url="https://10.0.240.6/";
$ZABBIX_ADMIN_LOGIN="Admin";
$ZABBIX_ADMIN_PW="zabbix";

$json2='{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "'.$ZABBIX_ADMIN_LOGIN.'",
        "password":  "'.$ZABBIX_ADMIN_PW.'"
    },
    "id": 1,
    "auth": null
}';



$ch2 = curl_init();

curl_setopt($ch2, CURLOPT_URL, $zabbix_api_url);
curl_setopt($ch2, CURLOPT_POST, 1);
curl_setopt($ch2, CURLOPT_POSTFIELDS, $json2);
//Avec la ligne suivante curl, retournera la valeur resultat ou false si erreur
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);

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

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

$obj2 = json_decode($json2,true);

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

Il me retourne:

Resultat en JSON: bool(false)
Resultat JSON converti en une variable PHP: NULL

58

Re: Unification du parc GLPI et Zabbix

c'est l'url qui n'est pas bonne

$zabbix_api_url="https://10.0.240.6/api_jsonrpc.php";

essayez directement dans votre navigateur pour vois si vous avez une réponse

Trouver la panne avant de réparer...
*GLPI 0.90.5+fusion90+1.0+behaviours0.90+reports+fields+appliances+pdf+badges+webservices PHP7.0 Mariadb10
*GLPI 9.1.3 (behaviours+DashBoard+fields+pdf)hebergé sur serveur mutualisé.

59

Re: Unification du parc GLPI et Zabbix

vous avez la doc zabbix ici
https://www.zabbix.com/documentation/2.2/manual/api

il est précisé qu'il faut aussi un header avec content type :

Trouver la panne avant de réparer...
*GLPI 0.90.5+fusion90+1.0+behaviours0.90+reports+fields+appliances+pdf+badges+webservices PHP7.0 Mariadb10
*GLPI 9.1.3 (behaviours+DashBoard+fields+pdf)hebergé sur serveur mutualisé.

60

Re: Unification du parc GLPI et Zabbix

Dans mon navigateur, l'URL: https://10.0.240.6/api_jsonrpc.php me retourne une page vide.
Problème d'API ?

61

Re: Unification du parc GLPI et Zabbix

l'ip pointe vers la racine ou vers zabbix ?
l'url pourrait être comme ça mais je ne sais pas comment vous l'avez installé.

https://10.0.240.6/zabbix/api_jsonrpc.php

Trouver la panne avant de réparer...
*GLPI 0.90.5+fusion90+1.0+behaviours0.90+reports+fields+appliances+pdf+badges+webservices PHP7.0 Mariadb10
*GLPI 9.1.3 (behaviours+DashBoard+fields+pdf)hebergé sur serveur mutualisé.

62

Re: Unification du parc GLPI et Zabbix

La première URL est la bonne mais c'est une page vide.
En ce qui concerne le header, comment l'intégrer au script?

POST https://10.0.240.6/api_jsonrpc.php HTTP/1.1
Content-Type: application/json-rpc

{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}}

63

Re: Unification du parc GLPI et Zabbix

je le ferais dans un tableau $Zabbix_headers que je passerais curl_setopt($ch, CURLOPT_HTTPHEADER, $Zabbix_headers);

$Zabbix_headers=array('Content-Type: application/json-rpc');

mais vous n'avez pas réussi à le faire avec glpi...
vous pouvez tenter dans l'url, sur un malentendu ça pourrait peut être marcher:

https://10.0.240.6/api_jsonrpc.php?Content-Type=%20application/json-rpc
Trouver la panne avant de réparer...
*GLPI 0.90.5+fusion90+1.0+behaviours0.90+reports+fields+appliances+pdf+badges+webservices PHP7.0 Mariadb10
*GLPI 9.1.3 (behaviours+DashBoard+fields+pdf)hebergé sur serveur mutualisé.

64

Re: Unification du parc GLPI et Zabbix

en admettant que l'url soit la bonne, ci dessous une page php pour tester votre API zabbix.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- la denree -2017-  -->
<head>
    <title>TEST API</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta name="generator" content="Bluefish 2.2.7" />
    <meta name="Keywords" content="zabbix test," />
    <meta name="Description" content="utilisation api zabbix" />
    <meta http-equiv="X-UA-Compatible" content="IE=8" />
    <meta http-equiv="pragma" content="no-cache" />
    <meta http-equiv="cache-control" content="no-cache" />


</head>
<body>
<h1>test api zabbix</h1>
<?php


$uri = "https://10.0.240.6/zabbix/api_jsonrpc.php";
$username = "admin";
$password= "zabbix";

function expand_arr($array) {    
    foreach ($array as $key => $value) {
        if (is_array($value)) {            
            echo "<i>".$key."</i>:<br>";
            expand_arr($value);
            echo "<br>\n";
        } else {            
            echo "<i>".$key."</i>: ".$value."<br>\n";
        }        
    }
}

function json_request($uri, $data) {
    $json_data = json_encode($data);    
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, $uri);
    curl_setopt($c, CURLOPT_CUSTOMREQUEST, "POST");                                                  
    curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($c, CURLOPT_POST, $json_data);
    curl_setopt($c, CURLOPT_POSTFIELDS, $json_data);
    curl_setopt($c, CURLOPT_HTTPHEADER, array(                                                                          
        'Content-Type: application/json',                                                                                
        'Content-Length: ' . strlen($json_data))                                                                       
    );
    curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);    
    $result = curl_exec($c);
    
    /* Uncomment to see some debug info
    echo "<b>JSON Request:</b><br>\n";
    echo $json_data."<br><br>\n";

    echo "<b>JSON Answer:</b><br>\n";
    echo $result."<br><br>\n";

    echo "<b>CURL Debug Info:</b><br>\n";
    $debug = curl_getinfo($c);
    echo expand_arr($debug)."<br><hr>\n";
    */

    return json_decode($result, true);
}

function zabbix_auth($uri, $username, $password) {
    $data = array(
        'jsonrpc' => "2.0",
        'method' => "user.login",
        'params' => array(
            'user' => $username,
            'password' => $password
        ),
        'id' => "1"
        
    );    
    
    $response = json_request($uri, $data);    
    return $response['result'];
}

function zabbix_get_hostgroups($uri, $authtoken) {
    $data = array(
        'jsonrpc' => "2.0",
        'method' => "host.get",
        'params' => array(
            //'output' => "host",
            
        ),
        'id' => "2",
        'auth' => $authtoken
    );    
    $response = json_request($uri, $data);    
    print_r($response['host']);
    return $response['result'];
}

$authtoken = zabbix_auth($uri, $username, $password);
echo "<br/>le jeton de session zabbix est : ".$authtoken."<br/>";
expand_arr(zabbix_get_hostgroups($uri, $authtoken));

?>


</body>
</html>
Trouver la panne avant de réparer...
*GLPI 0.90.5+fusion90+1.0+behaviours0.90+reports+fields+appliances+pdf+badges+webservices PHP7.0 Mariadb10
*GLPI 9.1.3 (behaviours+DashBoard+fields+pdf)hebergé sur serveur mutualisé.

65 (edited by slap Yesterday 09:41:24)

Re: Unification du parc GLPI et Zabbix

J'ai un problème au niveau de l'API, je ne comprend pas, j'ai l'impression qu'elle n'est pas installée sur mon serveur Zabbix.. je ne trouve aucune trace de api_jsonrpc.php..
La page me renvoie uniquement le code html, l'URL ne doit pas être la bonne.
Je ne sais pas d'ou vient ce problème d'API.

66

Re: Unification du parc GLPI et Zabbix

voyez sur les forums zabbix...

Trouver la panne avant de réparer...
*GLPI 0.90.5+fusion90+1.0+behaviours0.90+reports+fields+appliances+pdf+badges+webservices PHP7.0 Mariadb10
*GLPI 9.1.3 (behaviours+DashBoard+fields+pdf)hebergé sur serveur mutualisé.