zabbix API基本使用方法介紹
阿新 • • 發佈:2017-08-10
zabbix api python 自動化 token
前言:
以下內容根據zabbix 3.2官方文檔總結:https://www.zabbix.com/documentation/3.2/manual/api
此文檔只是簡單的介紹API的基本使用,關於一些完整功能或高級功能將在後續的博文中展現
調用Zabbix api使用的是HTTP的POST請求方式
其中請求的頭部為:
{"Content-Type": "application/json-rpc"}
請求的URL為:
http://zabbix.aek.com/api_jsonrpc.php
如果url中包含目錄需要把目錄寫上,如http://zabbix.aek.com/zabbix/api_jsonrpc.php,最後就是請求的數據(data),比如獲取Token,創建主機,獲取主機ID,獲取模板ID,獲取組ID,刪除主機等。
接下以以Python調用 API為例,例出用法案例:
測試連接是否成功
#!/usr/bin/python #coding:utf:8 import requests import json url = "http://zabbix.aek.com/zabbix/api_jsonrpc.php" header = {"Content-Type": "application/json-rpc"} data = {"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":None,"params":{}} request = requests.post(url=url, headers=header, data=json.dumps(data)) print(request.content)
上面的data用來測試是否可連接成功,官方文檔中auth的值為null,但在python中null用None表示,所以需要改成None。
成功後返回值大概如下:會顯示zabbix版本
{"jsonrpc":"2.0","result":"3.2.3","id":1}
獲取Token
#!/usr/bin/python #coding:utf:8 import requests import json url = "http://zabbix.aek.com/zabbix/api_jsonrpc.php" header = {"Content-Type": "application/json-rpc"} data = {"jsonrpc": "2.0", "method": "user.login", "params": { "user": "Admin", "password": "zabbix" }, "id": 1, "auth": None } request = requests.post(url=url, headers=header, data=json.dumps(data)) print(request.content)
成功後返回值如下:會返回一個Token
{"jsonrpc":"2.0","result":"391277f070a3ebc5b2afe9cf466cb74c","id":1}
最後以一個完整的Python腳本通過zabbix API獲取所有主機的信息為例:
#!/usr/bin/python #coding:utf:8 import requests import json class Zabbix: def __init__(self, url, header, username, password): self.url = url self.header = header self.username = username self.password = password def getToken(self): #獲取Token並返回字符Token字符串 data = {"jsonrpc": "2.0", "method": "user.login", "params": { "user": self.username, "password": self.password }, "id": 1, "auth": None } token = requests.post(url=self.url, headers=self.header, data=json.dumps(data)) return json.loads(token.content)["result"] def getAllHost(self): #獲取所有主機信息 data = {"jsonrpc": "2.0", "method": "host.get", "params": { "output": [ "hostid", "host", ], "selectGroups": "extend", "selectInterfaces": [ "interfaceid", "ip" ] }, "id": 2, "auth": self.getToken() } hosts = requests.post(url=self.url, headers=self.header, data=json.dumps(data)) return json.loads(hosts.content)["result"] if __name__ == "__main__": header = {"Content-Type": "application/json-rpc"} url="http://zabbix.aek.com/zabbix/api_jsonrpc.php" test = Zabbix(url=url, header=header, username="Admin", password="zabbix") print(test.getAllHost())
通過以上的學習相信大家對Zabbix API已經有一個初步的認識,後面將會通過API去完成主機的自動添加,自動化報表等使用
本文出自 “藍色_風暴” 博客,請務必保留此出處http://270142877.blog.51cto.com/12869137/1955120
zabbix API基本使用方法介紹