码迷,mamicode.com
首页 > Windows程序 > 详细

zabbix API基本使用方法介绍

时间:2018-04-10 15:21:44      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:extend   __name__   ini   div   import   json-rpc   style   syntax   param   

前言:

  以下内容根据zabbix 3.2官方文档总结:https://www.zabbix.com/documentation/3.2/manual/api

  此文档只是简单的介绍API的基本使用,关于一些完整功能或高级功能将在后续的博文中展现

 

调用Zabbix api使用的是HTTP的POST请求方式

其中请求的头部为:

1
{"Content-Type""application/json-rpc"}

请求的URL为:

1
http://zabbix.aek.com/api_jsonrpc.php

如果url中包含目录需要把目录写上,如http://zabbix.aek.com/zabbix/api_jsonrpc.php,最后就是请求的数据(data),比如获取Token,创建主机,获取主机ID,获取模板ID,获取组ID,删除主机等。

 

接下以以Python调用 API为例,例出用法案例:

测试连接是否成功

技术分享图片
 1 #!/usr/bin/python
 2 #coding:utf:8
 3  
 4 import requests
 5 import json
 6  
 7 url = "http://zabbix.aek.com/zabbix/api_jsonrpc.php"
 8 header = {"Content-Type": "application/json-rpc"}
 9 data = {"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":None,"params":{}}
10 request = requests.post(url=url, headers=header, data=json.dumps(data))
11 print(request.content)
View Code

上面的data用来测试是否可连接成功,官方文档中auth的值为null,但在python中null用None表示,所以需要改成None。

成功后返回值大概如下:会显示zabbix版本

1 {"jsonrpc":"2.0","result":"3.2.3","id":1}

获取Token

技术分享图片
 1 #!/usr/bin/python
 2 #coding:utf:8
 3  
 4 import requests
 5 import json
 6  
 7 url = "http://zabbix.aek.com/zabbix/api_jsonrpc.php"
 8 header = {"Content-Type": "application/json-rpc"}
 9 data = {"jsonrpc": "2.0",
10         "method": "user.login",
11         "params": {
12             "user": "Admin",
13             "password": "zabbix"
14         },
15         "id": 1,
16         "auth": None
17         }
18 request = requests.post(url=url, headers=header, data=json.dumps(data))
19 print(request.content)
View Code

成功后返回值如下:会返回一个Token

1 {"jsonrpc":"2.0","result":"391277f070a3ebc5b2afe9cf466cb74c","id":1}

最后以一个完整的Python脚本通过zabbix API获取所有主机的信息为例:

技术分享图片
 1 #!/usr/bin/python
 2 #coding:utf:8
 3  
 4 import requests
 5 import json
 6  
 7 class Zabbix:
 8  
 9     def __init__(self, url, header, username, password):
10  
11         self.url = url
12         self.header = header
13         self.username = username
14         self.password = password
15  
16     def getToken(self):
17         #获取Token并返回字符Token字符串
18  
19         data = {"jsonrpc": "2.0",
20                 "method": "user.login",
21                 "params": {
22                     "user": self.username,
23                     "password": self.password
24                 },
25                 "id": 1,
26                 "auth": None
27                 }
28         token = requests.post(url=self.url, headers=self.header, data=json.dumps(data))
29         return json.loads(token.content)["result"]
30      
31     def getAllHost(self):
32         #获取所有主机信息
33  
34         data = {"jsonrpc": "2.0",
35                 "method": "host.get",
36                 "params": {
37                     "output": [
38                         "hostid",
39                         "host",
40                     ],
41                     "selectGroups": "extend",
42                     "selectInterfaces": [
43                         "interfaceid",
44                         "ip"
45                     ]
46                 },
47                 "id": 2,
48                 "auth": self.getToken()
49                 }
50         hosts = requests.post(url=self.url, headers=self.header, data=json.dumps(data))
51         return json.loads(hosts.content)["result"]
52  
53  
54 if __name__ == "__main__":
55     header = {"Content-Type": "application/json-rpc"}
56     url="http://zabbix.aek.com/zabbix/api_jsonrpc.php"
57     test = Zabbix(url=url, header=header, username="Admin", password="zabbix")
58     print(test.getAllHost())
View Code

 

zabbix API基本使用方法介绍

标签:extend   __name__   ini   div   import   json-rpc   style   syntax   param   

原文地址:https://www.cnblogs.com/navysummer/p/8778499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!