You are not logged in.
D'accord, merci.
Je vais regarder tout ça et je vais essayé de m'y retrouver..
Offline
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.
Offline
É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...
GLPI10.0.10 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6
préprod : glpi10.0.15
Offline
Merci, il faut que je me renseigne sur curl.
Offline
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 ?
Offline
$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...
GLPI10.0.10 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6
préprod : glpi10.0.15
Offline
$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
Offline
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...
GLPI10.0.10 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6
préprod : glpi10.0.15
Offline
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...
GLPI10.0.10 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6
préprod : glpi10.0.15
Offline
Dans mon navigateur, l'URL: https://10.0.240.6/api_jsonrpc.php me retourne une page vide.
Problème d'API ?
Offline
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é.
Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6
préprod : glpi10.0.15
Offline
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":{}}
Offline
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...
GLPI10.0.10 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6
préprod : glpi10.0.15
Offline
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...
GLPI10.0.10 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6
préprod : glpi10.0.15
Offline
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.
Last edited by slap (2017-05-26 09:41:24)
Offline
voyez sur les forums zabbix...
Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6
préprod : glpi10.0.15
Offline
Salut,
je reviens vers toi après avoir avancé coté ZABBIX.
Il ne me manque plus que la partie d'ajout des machines a ZABBIX.
Cependant j'ai un souci quand je récupère les machines de GLPI.
Je voudrai récupérer les machines d'une seule entité et plusieurs paramètres de la machine GLPI comme:
- Le nom
- L'IP
Et si les machines n'ont pas d'ip, ne pas les ajouter à la liste.
Si tu as des informations la dessus je suis preneur
Last edited by slap (2017-06-16 10:03:37)
Offline
Up
Offline
pour récupérer la liste des ordinateurs d'une entité :
$url=$api_url . "/search/Computer/?is_deleted=0&criteria[0][field]=80&criteria[0][searchtype]=0&criteria[0][value]=".$my_entity_name;
Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6
préprod : glpi10.0.15
Offline
Il ne me renvoi pas d'erreur mais la liste récupérée n'est pas bonne:
- 0
- 0
- 1
- ASC
- 0--1/0
As-tu une idée pour récupérer les PC avec une adresse IP ?
Offline
il n'y a aucun pc qui répond au critère. vois avec le libellé de l'entité qui ne doit pas correspondre.
pour l'ip je ne me suis pas penché dessus, je n'ai pas trop le temps ( et comme je n'en ai pas besoin pour moi ....)
je n'ai pas trouvé les liens entre computer, networkdevices, ipdresses, networknames etc...
Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6
préprod : glpi10.0.15
Offline
J'ai essayé plusieurs libellé, je vais continuer a essayer.
D'accord, je vois.. il n'y a vraiment pas beaucoup d'infos pour l'IP ..
Last edited by slap (2017-06-19 10:41:44)
Offline
il faut bien sur ajouter : session_token, apptoken etc...
Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6
préprod : glpi10.0.15
Offline
Quand je met un nom autre que le nom de l'entité, il me dit que le session token est manquant, alors que non.
$url=$glpi_api_url . "/search/Computer/?is_deleted=0&criteria[0][field]=80&criteria[0][searchtype]=0&criteria[0][value]=".$my_entity_name;
$url .= "&Content-Type=%20application/json&app_token=".$app_token ."&session_token=".$sess_token;
Last edited by slap (2017-06-19 10:43:21)
Offline
si vous faites un
echo "<br/> api url : ".$url."<br/> ";
l'url est bien complète avec vos jetons ?
Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6
préprod : glpi10.0.15
Offline