Python3通過Zabbix API獲取數據


Zabbix API官方文檔:https://www.zabbix.com/documentation/2.0/manual/appendix/api/api

#!/usr/bin/env python
#For Python3
import urllib.request,urllib.parse,json,sys,importlib,argparse
importlib.reload(sys)


class zbxAPI():
    def __init__(self):
        self.url = "http://10.10.2.2/zabbix/api_jsonrpc.php"
        self.headers = {
                'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
                'Content-Type':'application/json'
                }
        self.authdata = {
                    "jsonrpc":"2.0",
                    "method":"user.login",
                    "params":
                            {
                                "user":"uname",
                                "password":"password"
                            },
                    "id":0
                }

    #獲取Token(auth data)
    def get_token(self):
        res = self.post_request(self.authdata)
        if 'result' in res:
            token = res['result']
            return token
        else:
            return res['error']['data']

    #發送參數到Zabbix服務器端請求數據
    def post_request(self,postdata):
        postdata = bytes(json.dumps(postdata),'utf8')
        try:
            request = urllib.request.Request(self.url,postdata,headers=self.headers)
            reponse = urllib.request.urlopen(request).read()
            content  = json.loads(reponse.decode('utf8'))
            return content
        except Exception as ErrorMsg:
            return ErrorMsg
            exit()

    #獲取host列表
    def list_hosts(self):
        host_list=[]
        get_data = {
            "jsonrpc":"2.0",
            "method":"host.get",
            "params":{
                   "output": "extend",
            },
            "auth":self.get_token(),
            "id":1,
        }
        res = self.post_request(get_data)
        reslist = res['result']
        for res in reslist:
            host_list.append(res['host'])
        return(host_list)


    #獲取template列表
    def list_templates(self):
        template_list=[]
        get_data = {
            "jsonrpc":"2.0",
            "method":"template.get",
            "params":{
                   "output": "extend",
            },
            "auth":self.get_token(),
            "id":1,
        }
        res = self.post_request(get_data)
        reslist = res['result']
        for res in reslist:
            print(res['templateid'] + ',' + res['host'])

    #測試認證是否成功,成功則打印auth data
    def Auth_test(self):
        print(self.get_token())

m=zbxAPI()
# m.Auth_test()
# print(m.list_hosts())
m.list_templates()


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM