json-rpc, построение запроса на php к zabbix api
Здравствуйте форумчане! Необходимо подключаться к zabbix api и запросами создавать, удалять или обновлять данные. Для написания запроса необходимо использовать php, но я почти вообще не шарю в программировании и отсюда вопрос: как должно выглядеть тела запроса на php? Как этот запрос, к примеру
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}
, записать в теле скрипта php?
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}
, записать в теле скрипта php?
Найденные решения
(1) Все, с этим разобрался, вот что получилось:
<?php
$header=array('Content-Type:application/json-rpc');
$params=array("jsonrpc" => "2.0","method" => "user.login","params" => array("user" => "Ваш логин","password" => "Ваш пароль"),"id" => 1);
$params_json=json_encode($params);
$API_URL = 'http://Ваш ip адрес/zabbix/api_jsonrpc.php';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $API_URL);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params_json);
$SESSION=json_decode(curl_exec($ch))->result;
$params=array("jsonrpc"=>"2.0","method"=>"item.get","params"=>array("output"=>"extend", "filter"=>array("host"=> "127.0.0.1")),"auth"=>$SESSION,"id"=>1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
$retval = curl_exec($ch);
curl_close($ch);
$result = json_decode($retval);
echo '<pre>';
print_r($result);
echo '<pre>';
?>
Показать
(3) Ну и с этим тоже разобрался, спасибо за помощь всем кто откликнулся!
Пример:
Пример:
&НаСервере
Процедура ПроверкаСоединенияНаСервере()
СтрокаJSON = "{
| ""jsonrpc"":""2.0"",
| ""method"":""proxy.get"",
| ""params"":{
| ""output"": ""extend"",
| ""selectHosts"": ""extend""
| },
| ""id"":1,
| ""auth"":""Ваш идентификатор""
| }";
HTTPСоединение = Новый HTTPСоединение("Ваш IP или доменное имя");
HTTPЗапрос = Новый HTTPЗапрос("/zabbix/api_jsonrpc.php");
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Сообщить("Код результата: " + Ответ.КодСостояния);
Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8"));
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Все, с этим разобрался, вот что получилось:
<?php
$header=array('Content-Type:application/json-rpc');
$params=array("jsonrpc" => "2.0","method" => "user.login","params" => array("user" => "Ваш логин","password" => "Ваш пароль"),"id" => 1);
$params_json=json_encode($params);
$API_URL = 'http://Ваш ip адрес/zabbix/api_jsonrpc.php';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $API_URL);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params_json);
$SESSION=json_decode(curl_exec($ch))->result;
$params=array("jsonrpc"=>"2.0","method"=>"item.get","params"=>array("output"=>"extend", "filter"=>array("host"=> "127.0.0.1")),"auth"=>$SESSION,"id"=>1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
$retval = curl_exec($ch);
curl_close($ch);
$result = json_decode($retval);
echo '<pre>';
print_r($result);
echo '<pre>';
?>
Показать
(3) Ну и с этим тоже разобрался, спасибо за помощь всем кто откликнулся!
Пример:
Пример:
&НаСервере
Процедура ПроверкаСоединенияНаСервере()
СтрокаJSON = "{
| ""jsonrpc"":""2.0"",
| ""method"":""proxy.get"",
| ""params"":{
| ""output"": ""extend"",
| ""selectHosts"": ""extend""
| },
| ""id"":1,
| ""auth"":""Ваш идентификатор""
| }";
HTTPСоединение = Новый HTTPСоединение("Ваш IP или доменное имя");
HTTPЗапрос = Новый HTTPЗапрос("/zabbix/api_jsonrpc.php");
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Сообщить("Код результата: " + Ответ.КодСостояния);
Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8"));
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот