博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3 使用 zabbix_client模块
阅读量:6144 次
发布时间:2019-06-21

本文共 5433 字,大约阅读时间需要 18 分钟。

除了上一篇使用自己定义的函数,我们还可使用pipy提供的zabbix_client模块,这样就不用我们自己去写登录函数,只要在模块开始指定用户名密码即可,方便很多。

#!/usr/bin/env python# Version = 3.5.2# __auth__ = '无名小妖'import timefrom zabbix_client import ZabbixServerProxyZABBIX_URL = 'http://alyz.zabbix.com'ZABBIX_USERNAME = "Admin"ZABBIX_PASSWORD = "zabbix"class Zabbix:    def __init__(self):        self.zb = ZabbixServerProxy(ZABBIX_URL)        self.zb.user.login(user=ZABBIX_USERNAME, password=ZABBIX_PASSWORD)    def get_hostgroup(self):        """        查询组所有组获取组id和name        :return: groupid和name        """        data = {           "output": ['groupid', 'name']   # "output": "extend",   查看所有字段        }        ret = self.zb.hostgroup.get(**data)        return ret    def get_hostid(self, groupids=None):        """        通过组id获取相关组内的所有主机        :param groupids: None表示获取所有组的主机,可以通过列表,元组等传入多个组id        :return: "hostid"和"name"        """        data = {            "output": ["hostid", "name"],            "groupids": groupids        }        ret = self.zb.host.get(**data)        return ret    def item_get(self, hostids=None):        """        通过获取的hostid查找相关监控想itemid        :param hostids: None表示获取所有主机的item,可以通过列表,元组等传入多个itemid        :return: "itemids", "key_"        """        data = {            "output": ["itemids", "key_"],            "hostids": hostids,        }        ret = self.zb.item.get(**data)        return ret    def history_get(self, itemid, i, limit=10):        """        通过itemid 获取相关监控项的历史数据        :param itemid:        :param i: 0 - numeric float; 1 - character; 2 - log; 3 - numeric unsigned; 4 - text.        :param limit: 获取数据的数量        :return:        """        data = {"output": "extend",                "history": i,                "itemids": [itemid],                "limit": limit                }        ret = self.zb.history.get(**data)        return ret    def add_zabbix_host(self, hostname="test_zabbix", ip="192.168.10.100", groupid="2"):        """        添加主机并且指定到组(传入主机名,IP地址和组ID)        :param hostname:        :param ip:        :param groupid:        :return:        """        data = {            "host": hostname,            "interfaces": [                {                    "type": 1,                    "main": 1,                    "useip": 1,                    "ip": ip,                    "dns": "",                    "port": "10050"                }            ],            "groups": [                {                    "groupid": groupid                }            ]        }        ret = self.zb.host.create(data)        return ret    def get_template(self):        """        查看现有模板        :return:        """        datalist = []        datadict = {}        data = {            "output": ["templateid", "name"]        }        ret = self.zb.template.get(data)        for i in ret:            datadict[i['name']] = i['templateid']            datalist.append(datadict)        return datalist    def link_template(self, hostid=10156, templateids=10001):        """        关联主机到模板        :param hostid:        :param templateids:        :return:        """        data = {            "hostid": hostid,            "templates": templateids        }        ret = self.zb.host.update(data)        return ret    def create_maintenance(self, name="test", hostids=10156, time=2):        """        添加维护周期        :param name:        :param hostids:        :param time:        :return:        """        data = {            "name": name,            "active_since": 1458142800,            "active_till": 1489678800,            "hostids": [                hostids            ],            "timeperiods": [                {                    "timeperiod_type": 0,                    "period": 3600                }            ]        }        ret = self.zb.maintenance.create(data)        self.host_status(10130, 1)        return ret    def get_maintenance(self):        """        获取维护周期        :return:        """        data = {            "output": "extend",            "selectGroups": "extend",            "selectTimeperiods": "extend"        }        ret = self.zb.maintenance.get(data)        return ret    #    # def del_maintenance(self, maintenanceids):    #     """    #     获取维护周期之后,通过传入maintenanceid删除维护周期    #     :param maintenanceids:    #     :return:    #     """    #     return self.zb.maintenance.delete(maintenanceids)    def host_status(self, hostid, status):        """        添加维护周期时候需要吧zabbix_host设置成非监控状态        :param hostid:        :param status:        :return:        """        data = {            "hostid": hostid,            "status": status        }        return self.zb.host.update(data)    # def host_del(self, hostids=10155):    #     """    #     通过hostids删除主机id,顺带也删除模板    #     :param hostids:    #     :return:    #     """    #     return self.zb.host.delete(hostids)if __name__ == "__main__":    zabbix_server = Zabbix()    print(zabbix_server.get_hostgroup())    print(zabbix_server.get_hostid([2, 1]))    print(zabbix_server.item_get())    # data = zabbix_server.history_get("24889",0)    # print(zabbix_server.add_zabbix_host())    print(zabbix_server.get_template())    # print(data[0]['Template OS Linux'])    # print(zabbix_server.link_template())    # print(zabbix_server.create_maintenance())    # print(zabbix_server.host_del(10155))    # print(zabbix_server.get_maintenance())    # print(zabbix_server.del_maintenance(15)))

  

 

转载于:https://www.cnblogs.com/wumingxiaoyao/p/7479650.html

你可能感兴趣的文章
css 动画 和 响应式布局和兼容性
查看>>
csrf 跨站请求伪造相关以及django的中间件
查看>>
MySQL数据类型--与MySQL零距离接触2-11MySQL自动编号
查看>>
生日小助手源码运行的步骤
查看>>
Configuration python CGI in XAMPP in win-7
查看>>
bzoj 5006(洛谷 4547) [THUWC2017]Bipartite 随机二分图——期望DP
查看>>
CF 888E Maximum Subsequence——折半搜索
查看>>
欧几里德算法(辗转相除法)
查看>>
面试题1-----SVM和LR的异同
查看>>
MFC控件的SubclassDlgItem
查看>>
如何避免历史回退到登录页面
查看>>
《图解HTTP》1~53Page Web网络基础 HTTP协议 HTTP报文内的HTTP信息
查看>>
unix环境高级编程-高级IO(2)
查看>>
树莓派是如何免疫 Meltdown 和 Spectre 漏洞的
查看>>
雅虎瓦片地图切片问题
查看>>
HTML 邮件链接,超链接发邮件
查看>>
HDU 5524:Subtrees
查看>>
手机端userAgent
查看>>
pip安装Mysql-python报错EnvironmentError: mysql_config not found
查看>>
http协议组成(请求状态码)
查看>>