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

#!/usr/bin/env python
# Version = 3.5.2
# __auth__ = '无名小妖'
import time
from zabbix_client import ZabbixServerProxy ZABBIX_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)))

  

python3 使用 zabbix_client模块的更多相关文章

  1. Python3之turtle模块的使用

    Python3之turtle模块的使用     直接扣代码就行: import turtle as t t.pensize(4) t.hideturtle() t.colormode(255) t.c ...

  2. python基础系列教程——Python3.x标准模块库目录

    python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...

  3. Python3:Requests模块的异常值处理

    Python3:Requests模块的异常值处理 用Python的requests模块进行爬虫时,一个简单高效的模块就是requests模块,利用get()或者post()函数,发送请求. 但是在真正 ...

  4. Python3中正则模块re.compile、re.match及re.search函数用法详解

    Python3中正则模块re.compile.re.match及re.search函数用法 re模块 re.compile.re.match. re.search 正则匹配的时候,第一个字符是 r,表 ...

  5. Python3安装Celery模块后执行Celery命令报错

    1 Python3安装Celery模块后执行Celery命令报错 pip3 install celery # 安装正常,但是执行celery 命令的时候提示没有_ssl模块什么的 手动在Python解 ...

  6. Python3之configparser模块

    1. 简介 configparser用于配置文件解析,可以解析特定格式的配置文件,多数此类配置文件名格式为XXX.ini,例如mysql的配置文件.在python3.X中 模块名为configpars ...

  7. python3.7 os模块

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 os模块 #os模块是与操作系统交互的一个接口 # os.get ...

  8. python3.7 json模块

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 json模块 ''' 要在不同的编程语言之间传递对象,就必须把对 ...

  9. python3.7 random模块

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 random模块 import random #随机模块 # r ...

随机推荐

  1. 2018.09.19 atcoder AtCoDeer and Rock-Paper(贪心)

    传送门 sb贪心啊. 显然能选帕子就选帕子. 首先假设第一个人全出石头. 考虑把一些石头修改成帕子. 这样贡献只增不减,加起来就是答案. 代码: #include<bits/stdc++.h&g ...

  2. CIC仿真

    在调用CIC时发现的,明确告诉调用那些库. CIC的设置窗口. 该CIC滤波器有两个输入一个输出.与下面的相比,同样要输出两路信号,但输出速率要高. 修改成以下的设置 设置一个接口,两个通道. 该设置 ...

  3. web大文件上传(web应用---SSH框架)

    版权所有 2009-2018荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...

  4. maven镜像

    使用maven管理项目,下载依赖jar包的时候,经常会下载很慢,但是如果使用镜像的话,速度超级快~~只要在.m2/setting.xml文件中设置镜像就可以啦~ 本文来自https://yq.aliy ...

  5. Hibernate 注解和配置文件两种方法的对比(有实例)

    hibernate多对多形式(User类<---->Educate类) 1.基于注解的形式: User类: package com.ssh.entities; import java.ut ...

  6. Android-CallUtil工具类

    打电话相关的工具类: public final class CallUtil { /** * 拨打电话(直接拨打电话) * @param phoneNum 电话号码 */ @SuppressLint( ...

  7. Python学习-17.Python中的错误处理(二)

    错误是多种多样的,在 except 语句中,可以捕获指定的异常 修改代码如下: import io path = r'' mode = 'w' try: file = open(path,mode) ...

  8. webform gridview合并单元格

    gridview合并单元格 由于项目要求,需要合并某些单元格,因此特意封装了如下帮助类: /// <summary> /// 合并单元格 /// </summary> publ ...

  9. 网易云社区有奖问答活动第二期——技术领导力、深入分布式、PHP圣经、Linux运维、Unity……三月热点图书等你拿!

    网易云社区第二期有奖问答活动开始了!(第一期活动已结束:人工智能图书大抽奖!) 欢迎积极参与网易云社区,讨论问题,交流心得.我们本期准备了一批技术领域热点图书,送给参与社区的朋友们,将以抽奖的形式送出 ...

  10. JIT与JVM的三种执行模式:解释模式、编译模式、混合模式

    Java JIT(just in time)即时编译器是sun公司采用了hotspot虚拟机取代其开发的classic vm之后引入的一项技术,目的在于提高java程序的性能,改变人们“java比C/ ...