json-rpc, построение запроса на php к zabbix api

1. user1343611 29.05.20 05:38 Сейчас в теме
Здравствуйте форумчане! Необходимо подключаться к zabbix api и запросами создавать, удалять или обновлять данные. Для написания запроса необходимо использовать php, но я почти вообще не шарю в программировании и отсюда вопрос: как должно выглядеть тела запроса на php? Как этот запрос, к примеру
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}
, записать в теле скрипта php?
Найденные решения
2. user1343611 01.06.20 11:24 Сейчас в теме
(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>'; 


?>
Показать
4. user1343611 04.06.20 06:33 Сейчас в теме
(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"));

КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1343611 01.06.20 11:24 Сейчас в теме
(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. user1343611 01.06.20 11:25 Сейчас в теме
Теперь встал вопрос как это переписать под 1С?
4. user1343611 04.06.20 06:33 Сейчас в теме
(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"));

КонецПроцедуры
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот