• zabbix api


    python 2.7

    # -*- coding: utf-8 -*-
    
    # @Time    : 2019-01-09 10:24
    # @Author  : 小贰
    # @FileName: zabbix_2_api.py
    # @function: zabbix api for python 2.x
    
    import json
    import urllib2
    from urllib2 import URLError
    import sys, argparse
    
    
    class zabbix_api:
        def __init__(self,url,user,passwd):
            self.url = url
            self.user = user
            self.passwd = passwd
            self.header = {"Content-Type": "application/json"}
    
        def user_login(self):
            data = json.dumps({
                "jsonrpc": "2.0",
                "method": "user.login",
                "params": {
                    "user": self.user,  # 修改用户名
                    "password": self.passwd  # 修改密码
                },
                "id": 0
            })
            request = urllib2.Request(self.url, data)
            for key in self.header:
                request.add_header(key, self.header[key])
            try:
                result = urllib2.urlopen(request)
            except URLError as e:
                print("33[041m 用户认证失败,请检查 !33[0m", e.code)
            else:
                response = json.loads(result.read())
                result.close()
                self.authID = response['result']
                return self.authID
    
        def main(self,method,params):
            data = json.dumps({
                "jsonrpc": "2.0",
                "method": method,
                "params": params,
                "auth": self.user_login(),
                "id": 1
            })
            request = urllib2.Request(self.url, data)
            for key in self.header:
                request.add_header(key, self.header[key])
    
            try:
                result = urllib2.urlopen(request)
            except URLError as e:
                if hasattr(e, 'reason'):
                    print('We failed to reach a server.')
                    print('Reason: ', e.reason)
                elif hasattr(e, 'code'):
                    print('The server could not fulfill the request.')
                    print('Error code: ', e.code)
            else:
                response = json.loads(result.read())
                # print response
                for host in response['result']:
                    print ("HostID : %s	 HostName : %s	" % (host['hostid'], host['name']))
                result.close()
                # print "主机数量: 33[31m%s33[0m"%(len(response['result']))
    
    
    if __name__ == "__main__":
        url = 'http://192.168.1.218/zabbix/api_jsonrpc.php'
        user = "admin"
        passwd = "zabbix"
        zabbix = zabbix_api(url,user,passwd)
        method = "host.get"
        params = {
            "output": ["hostid", "name"],
            "templateids": ["10105"]
        }
        zabbix.main(method,params)

    python 3.6

    # -*- coding: utf-8 -*-
    
    # @Time    : 2019-01-09 10:24
    # @Author  : 小贰
    # @FileName: zabbix_2_api.py
    # @function: zabbix api for python 3.x
    
    import json
    from urllib import request, parse
    
    
    class zabbix_api:
        def __init__(self,url,user,passwd):
            self.url = url
            self.user = user
            self.passwd = passwd
            self.header = {"Content-Type": "application/json"}
    
        def user_login(self):
            data = {
                "jsonrpc": "2.0",
                "method": "user.login",
                "params": {
                    "user": self.user,
                    "password": self.passwd
                },
                "id": 0
            }
            # 由于API接收的是json字符串,故需要转化一下
            data = json.dumps(data).encode('utf-8')
            # 对请求进行包装
            req = request.Request(url, headers=self.header, data=data)
            try:
                # 打开包装过的url
                result = request.urlopen(req)
            except Exception as e:
                print("Auth Failed, Please Check Your Name And Password:", e)
            else:
                response = result.read()
                # 上面获取的是bytes类型数据,故需要decode转化成字符串
                page = response.decode('utf-8')
                # 将此json字符串转化为python字典
                page = json.loads(page)
                self.authID = page['result']
                result.close()
                return self.authID
        def main(self,method,params):
            data = {
                "jsonrpc": "2.0",
                "method": method,
                "params": params,
                "auth": self.user_login(),
                "id": 1
            }
            data = json.dumps(data).encode("utf-8")
            req = request.Request(url, headers=self.header, data=data)
    
            try:
                result = request.urlopen(req)
            except Exception as e:
                print('Error code: ', e)
            else:
                response = result.read()
                # 上面获取的是bytes类型数据,故需要decode转化成字符串
                page = response.decode('utf-8')
                # 将此json字符串转化为python字典
                page = json.loads(page)
    
                for host in page['result']:
                    print ("HostID : %s	 HostName : %s	" % (host['hostid'], host['name']))
                result.close()
                # print "主机数量: 33[31m%s33[0m"%(len(response['result']))
    
    if __name__ == "__main__":
        url = 'http://192.168.1.218/zabbix/api_jsonrpc.php'
        user = "admin"
        passwd = "zabbix"
        zabbix = zabbix_api(url, user, passwd)
        method = "host.get"
        params = {
            "output": ["hostid", "name"],
            "templateids": ["10105"]
        }
        zabbix.main(method, params)
  • 相关阅读:
    188. 买卖股票的最佳时机 IV
    139. 单词拆分
    198. 打家劫舍
    122. 买卖股票的最佳时机II
    C#界面控件汇总
    电脑重装系统的三种方式
    SQL Server Profiler的使用
    反向路由检测 问题记录
    迅为龙芯2K1000开发板网络加载系统
    迅为IMX8M mini开发板Linix系统修改默认屏幕
  • 原文地址:https://www.cnblogs.com/xiao2er/p/10243303.html
Copyright © 2020-2023  润新知