1. 通过zabbix提供的api进行维护模式的设置

#!/usr/bin/env python
# -*-coding:utf-8-*-
import urllib
import urllib2
import json
import sys
import platform
import time def auth(uid, username, password, api_url):
"""
zabbix认证
:param uid:
:param username:
:param password:
:return:
"""
dict_data = {}
dict_data['method'] = 'user.login' # 方法
dict_data['id'] = uid # 用户id
dict_data['jsonrpc'] = "2.0" # api版本
dict_data['params'] = {"user": username, "password": password} # 用户账号密码
jdata = json.dumps(dict_data) # 格式化json数据
content = post_data(jdata, api_url) # post json到接口
return content # 返回信息 def post_data(jdata, url):
"""
POST方法
:param jdata:
:param url:
:return:
"""
req = urllib2.Request(url, jdata, {'Content-Type': 'application/json'})
response = urllib2.urlopen(req)
# content = response.read()
content = json.load(response)
return content def create_maintenance(name, hostid, active_since, active_till, period, auth_code, api_url):
"""
create maintenance
:return:
"""
dict_data = {}
dict_data['method'] = 'maintenance.create' # 方法
dict_data['id'] = uid # 用户id
dict_data['jsonrpc'] = "2.0" # api版本
dict_data['auth'] = auth_code # api版本
dict_data['description'] = "UPDATE" + hostid # api版本
# host
hostids = [hostid]
# timeperiods
timeperiods = [{"timeperiod_type": 0, "start_time": 64800, "period": period}]
dict_data['params'] = {"name": name, "active_since": active_since, "timeperiods": timeperiods,
"active_till": active_till, "hostids": hostids} # 用户账号密码
jdata = json.dumps(dict_data) # 格式化json数据
content = post_data(jdata, api_url) # post json到接口
print content
return content # 返回信息 def get_hostid(hostname, auth_code, uid, api_url):
"""
use hostname get hostid
:param hostname:
:param auth:
:param uid:
:return:
"""
dict_data = {}
dict_data['method'] = 'host.getobjects' # 方法
dict_data['id'] = uid # 用户id
dict_data['jsonrpc'] = "2.0" # api版本
dict_data['params'] = {"name": hostname} # 主机名
dict_data['auth'] = auth_code # auth串
jdata = json.dumps(dict_data) # 格式化json数据
content = post_data(jdata, api_url) # post json到接口
print content
return content # 返回信息 def logout(uid, auth_code, api_url):
"""
退出
:param uid:
:param auth_code:
:return:
"""
dict_data = {}
dict_data['method'] = 'user.logout' # 方法
dict_data['id'] = uid # 用户id
dict_data['jsonrpc'] = "2.0" # api版本
dict_data['params'] = []
dict_data['auth'] = auth_code # auth串
jdata = json.dumps(dict_data) # 格式化json数据
content = post_data(jdata, api_url) # post json到接口
return content # 返回信息 if __name__ == '__main__':
# user info
uid = 1 # 用户ID
username = 'admin'
password = '123456'
api_url = "http://192.168.1.100/api_jsonrpc.php"
res = auth(1, username, password, api_url) # 认证
if res['result']:
auth_code = res['result'] # 认证串
hostname = platform.node() # 主机名
res = get_hostid(hostname, auth_code, uid, api_url)
if res['result']:
period = 600 # 维护时长
active_since = int(time.time()) # 开始时间
active_till = int(time.time()) + period # 结束时间
hostid = res['result'][0]['hostid'] # 主机
res = create_maintenance('AutoMaintenance_' + hostname + '_' + str(active_since), hostid, active_since, active_till, period,
auth_code, api_url) # 创建维护
logout(uid, auth_code, api_url) # 退出登录
print res
else:
pass

备注:以上脚本适用于zabbix2.4及以下版本

需要修改uid、username、password、api_url以及res中的auth函数的uid值,通过修改period的值来修改维护时长。

该脚本通过platform模块获取到agent的主机名,确保server端的主机名与客户端一致,且存在,否则设置不成功。

设置完成后可在Configuration->Maintenance页面中查看设置的维护模板。

可以通过在Configuration->Hosts页面中查看是否生效。

zabbix api 设置维护模式的更多相关文章

  1. PowerShell管理SCOM_批量设置维护模式(上 )

    #定义存储需要置为维护模式的计算机名称列表 $serverlist = "C:\scomm\servers.txt" #定义脚本执行结果的输出位置 $server_maintena ...

  2. PowerShell管理SCOM_批量设置维护模式(下)

    #定义存储需要置为维护模式的计算机名称列表$serverlist = "C:\scomm\servers.txt"#定义RMS服务器名称$rmsServerName=”scomw. ...

  3. ambari 维护模式及reset API 操作

    Ambari 的维护模式(Maintenance Mode)介绍 Ambari 提供的 Maintenance Mode,是为了让用户在调试或者维护 Service 的时候,抑制不必要的告警(Aler ...

  4. zabbix 接口 | zabbix api 实践

    原文地址:https://www.jianshu.com/p/d5faa110e78e zabbix 接口地址:https://www.zabbix.com/documentation/3.2/man ...

  5. JAVA访问Zabbix API

    Zabbix 一.Zabbix 概述 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的 ...

  6. 03: zabbix API接口 对 主机、主机组、模板、应用集、监控项、触发器等增删改查

    目录:Django其他篇 01: 安装zabbix server 02:zabbix-agent安装配置 及 web界面管理 03: zabbix API接口 对 主机.主机组.模板.应用集.监控项. ...

  7. Spring Cloud Netflix项目进入维护模式

    任何项目都有其生命周期,Spring Could Netflix也不例外,官宣已进入维护模式,如果在新项目开始考虑技术选型时要考虑到这点风险,并考虑绕道的可能性. 原创: itmuch  IT牧场 这 ...

  8. oracle学习笔记(二)设置归档模式

    设置归档模式(mount状态) ALTER database ARCHIVELOG; //关闭数据库 shutdown immediate //启动数据库到mount状态 startup mount ...

  9. python 调用zabbix api接口实现主机的增删改查

    python程序调用zabbix系统的api接口实现对zabbix_server端主机的增删改查,使用相关功能时候,需要打开脚本中的相关函数. 函数说明: zabbixtools()  调用zabbi ...

随机推荐

  1. ASP .NET登录界面用户验证码代码

    //ASP .NET用户登录界面经常用到验证码代码如下 private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码 ...

  2. 【LibreOJ】#6257. 「CodePlus 2017 12 月赛」可做题2

    [题意]数列满足an=an-1+an-2,n>=3.现在a1=i,a2=[l,r],要求满足ak%p=m的整数a2有多少个.10^18. [算法]数论(扩欧)+矩阵快速幂 [题解]定义fib(i ...

  3. scrapy爬虫框架介绍

    一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...

  4. 商城项目(ssm+dubbo+nginx+mysql统合项目)总结(4)

    我不会在这里贴代码和详细步骤什么的,我觉得就算我把它贴出来,你们照着步骤做还是会出很多问题,我推荐你们去看一下黑马的这个视频,我个人感觉很不错,一步一步走下来可以学到很多东西.另外,视频和相关文档的话 ...

  5. android 系统的休眠与唤醒+linux 系统休眠

    Android休眠与唤醒驱动流程分析 标准Linux休眠过程: powermanagement notifiers are executed with PM_SUSPEND_PREPARE tasks ...

  6. FPGA与CPLD的概念及其区别

    一.FPGA与CPLD的基本概念 1.CPLD CPLD主要是由可编程逻辑宏单元(LMC,Logic Macro Cell)围绕中心的可编程互连矩阵单元组成,其中LMC逻辑结构较复杂,并具有复杂的I/ ...

  7. xargs -i 和-I 的区别【转】

    xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如  # find . -type f -name "*.log" | xargs rm -rf * ...

  8. elk系列6之tcp模块的使用【转】

    preface tcp模块的使用场景如下: 有一台服务器A只需要收集一个日志,那么我们就可以不需要在这服务器上安装logstash,我们通过在其他logstash上启用tcp模块,监听某个端口,然后我 ...

  9. Windows: 在系统启动时运行程序、定时计划任务、定时关机

    lesca今天介绍一些让系统在启动时,而非登录时,加载用户自定义的应用程序或脚本的方法,推荐度从前到后依次递减. 1. Windows任务计划(task scheduler) 用户可以按以下步骤进行操 ...

  10. HDU 2112 Today(Dijkstra+map)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目大意: 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050 ...