zoukankan      html  css  js  c++  java
  • Python编写从ZabbixAPI获取信息

    此脚本用Python3.6执行是OK的。

    # -*- coding: utf-8 -*-
    import json
    import urllib.request, urllib.error, urllib.parse

    class ZabbixAPI:
    def __init__(self):
    self.__url = 'http://192.168.56.102/zabbix/api_jsonrpc.php'
    self.__user = 'admin'
    self.__password = 'zabbix'
    self.__header = {"Content-Type": "application/json-rpc"}
    self.__token_id = self.UserLogin()
    #登陆获取token
    def UserLogin(self):
    data = {
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
    "user": self.__user,
    "password": self.__password
    },
    "id": 0,
    }
    return self.PostRequest(data)
    #推送请求
    def PostRequest(self, data):
    request = urllib.request.Request(self.__url,json.dumps(data).encode('utf-8'),self.__header)
    result = urllib.request.urlopen(request)
    response = json.loads(result.read().decode('utf-8'))
    try:
    # print response['result']
    return response['result']
    except KeyError:
    raise KeyError
    #主机列表
    def HostGet(self,hostid=None,hostip=None):
    data = {
    "jsonrpc":"2.0",
    "method":"host.get",
    "params":{
    "output":"extend",
    "selectGroups": "extend",
    "selectParentTemplates": ["templateid","name"],
    "selectInterfaces": ["interfaceid","ip"],
    "selectInventory": ["os"],
    "selectItems":["itemid","name"],
    "selectGraphs":["graphid","name"],
    "selectApplications":["applicationid","name"],
    "selectTriggers":["triggerid","name"],
    "selectScreens":["screenid","name"]
    },
    "auth": self.__token_id,
    "id":1,
    }
    if hostid:
    data["params"]={
    "output": "extend",
    "hostids": hostid,
    "sortfield": "name"
    }
    return self.PostRequest(data)
    #主机列表
    def HostCreate(self,hostname,hostip,groupid=None,templateid=None):
    data = {
    "jsonrpc":"2.0",
    "method":"host.create",
    "params": {
    "host": hostname,
    "interfaces": [
    {
    "type": 1,
    "main": 1,
    "useip": 1,
    "ip": hostip,
    "dns": "",
    "port": "10050"
    }
    ],
    "groups": [
    {
    "groupid": groupid
    }
    ],
    "templates": [
    {
    "templateid": templateid
    }
    ]
    },
    "auth": self.__token_id,
    "id":1,
    }
    return self.PostRequest(data)

    #主机组列表
    def HostGroupGet(self,hostid=None,itemid=None):
    data = {
    "jsonrpc":"2.0",
    "method":"hostgroup.get",
    "params":{
    "output": "extend",
    "hostids": hostid,
    "itemids": itemid,
    "sortfield": "name"
    },
    "auth": self.__token_id,
    "id":1,
    }
    return self.PostRequest(data)
    #监控项列表
    def ItemGet(self,hostid=None,itemid=None):
    data = {
    "jsonrpc":"2.0",
    "method": "item.get",
    "params": {
    "output": "extend",
    "hostids": hostid,
    "itemids": itemid,
    "sortfield": "name"
    },
    "auth": self.__token_id,
    "id":1,
    }
    return self.PostRequest(data)
    #模板列表
    def TemplateGet(self, hostid=None,templateid=None):
    data = {
    "jsonrpc":"2.0",
    "method": "template.get",
    "params": {
    "output": "extend",
    "hostids": hostid,
    "templateids": templateid,
    "sortfield": "name"
    },
    "auth": self.__token_id,
    "id":1,
    }
    return self.PostRequest(data)
    #图像列表
    def GraphGet(self,hostid=None,graphid=None):
    data = {
    "jsonrpc":"2.0",
    "method": "graph.get",
    "params": {
    "output": "extend",
    "hostids": hostid,
    "graphids": graphid,
    "sortfield": "name"
    },
    "auth": self.__token_id,
    "id":1,
    }
    return self.PostRequest(data)
    #历史数据
    def History(self,itemid,data_type):
    data = {
    "jsonrpc": "2.0",
    "method": "history.get",
    "params": {
    "output": "extend",
    "history": data_type,
    "itemids": itemid,
    "sortfield": "clock",
    "sortorder": "DESC",
    "limit": 30
    },
    "auth": self.__token_id,
    "id": 2
    }
    return self.PostRequest(data)
    #测试:python manager.py shell ; from ZABBIX.ZabbixAPI import * ; main(),代码修改了要ctrl+Z退出重进
    def main():
    zapi=ZabbixAPI()
    token=zapi.UserLogin()
    print(token)
    #39378ec03aa101c2b17d1d2bd6f4ef16
    hosts=zapi.HostGet()
    print(hosts)
    #[{u'host': u'Zabbix server', u'hostid': u'10084', u'interfaces': [{u'interfaceid': u'1', u'ip': u'127.0.0.1'}]}]

    if __name__ == '__main__':
    main()
  • 相关阅读:
    题6:利用二进制表示浮点数
    题5:将整数二进制形式的奇偶位交换
    如何访问别的主机共享的文件
    排序算法------插入排序
    centos7进入单用户模式修改root密码
    排序算法------选择排序法
    排序算法------冒泡排序法
    题4:判断一个数是否时2的整数次方
    LockSupport类
    synchronized原理及锁膨胀
  • 原文地址:https://www.cnblogs.com/TaleG/p/8672316.html
Copyright © 2011-2022 走看看