zabbix api
#!/usr/bin/env python
# -*-coding:utf-8 -*-
import requests
import json class AutoZabbix:
def __init__(self, hostname, visibleName, ip, groupname, template_name):
self.url = 'http://192.168.67.230/zabbix/api_jsonrpc.php'
self.headers = {'Content-Type': 'application/json'}
auth = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "admin", ###验证
"password": ""
},
"id": 1,
"auth": None,
}
response = requests.post(self.url, data=json.dumps(auth), headers=self.headers)
# print(response.text)
self.authid = json.loads(response.text)['result'] ### auth的id 也就是token
self.hostname = hostname
self.visibleName = visibleName
self.ip = ip
self.add_template = [] # 生成列表,用于给指定IP的主机添加模板
# self.add_group = [] # 给指定IP的主机添加组 self.group_name = groupname # 多个组以逗号分隔,组名不能包含逗号[不支持多个组??!]
self.template_name = list(template_name.split(',')) # 多个模板以逗号分隔,模板名不能包含逗号 def get_template(self):
"""
输入模版名,返回模版ID
:return:
"""
content = {
"jsonrpc": "2.0",
"method": "template.get",
"params": {
# "output": "extend",
# "output": ["host", "templateid"],
"output": "templateid",
"filter": {
"host": self.template_name
}
},
"auth": self.authid,
"id": 2
}
response = requests.post(self.url, data=json.dumps(content), headers=self.headers)
result = json.loads(response.text)['result']
# print(result)
for item in result:
for k, v in item.items():
self.add_template.append(v)
return self.add_template def get_group(self):
"""
输入组名,查询返回组ID
"""
content = {
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
# "output": "extend",
"output": "groupid",
"filter": {
"name": self.group_name
}
},
"auth": self.authid,
"id": 3
} response = requests.post(self.url, data=json.dumps(content), headers=self.headers)
response_dic = json.loads(response.text)
print(response_dic)
groupid = response_dic['result'][0]['groupid']
return groupid # def get_hosts(self):
# content = {
# "jsonrpc": "2.0",
# "method": "host.get",
# "params": {
# "output": [
# "hostid",
# "host"
# ],
# "selectInterfaces": [
# "interfaceid",
# "ip"
# ]
# },
# "id": 3,
# "auth": self.authid
# }
#
# response = requests.post(self.url, data=json.dumps(content), headers=self.headers)
# # response_dic = json.loads(response.text)
# print(response.text) def create_host(self):
"""
添加主机,链接模版、添加组
:return:
"""
print(self.get_template())
content = {
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": self.hostname,
"name": self.visibleName,
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": self.ip,
"dns": "",
"port": ""
}
],
"groups": [
{
"groupid": self.get_group()
}
],
"templates": [
{
"templateid": ''
},
{
"templateid": ''
},
{
"templateid": ''
}
]
# "inventory_mode": 0,
# "inventory": {
# "macaddress_a": "01234",
# "macaddress_b": "56768"
# }
},
"auth": self.authid,
"id": 21
}
# print(json.dumps(content))
response = requests.post(self.url, data=json.dumps(content), headers=self.headers)
return response.text hostname = '192.168.67.227'
visibleName = 'vpn'
ip = '192.168.67.227'
groupname = 'office_server'
template_name = 'disk-IO-status,Template ICMP Ping,Template OS Linux,Template Linux TCP Status' # 模板之间用逗号分隔 obj = AutoZabbix(hostname, visibleName, ip, groupname, template_name)
response = obj.create_host()
print(response)
https://www.jianshu.com/p/d5faa110e78e
# 登录:
#!/usr/bin/env python
import urllib2
import json
#定义URL账户密码
url = 'http://zabbixip/zabbix/api_jsonrpc.php'
username = 'admin'
password = 'password'
#定义通过HTTP方式访问API地址的函数,后面每次请求API的各个方法都会调用这个函数
def requestJson(url,values):
data = json.dumps(values)
req = urllib2.Request(url, data, {'Content-Type': 'application/json-rpc'})
response = urllib2.urlopen(req, data)
output = json.loads(response.read())
# print output
try:
message = output['result']
except:
message = output['error']['data']
print message
quit() return output['result'] #API接口认证的函数,登录成功会返回一个Token
def authenticate(url, username, password):
values = {'jsonrpc': '2.0',
'method': 'user.login',
'params': {
'user': username,
'password': password
},
'id': ''
}
idvalue = requestJson(url,values)
return idvalue # API
#!/usr/bin/env python
#coding=utf-8
import sys
import argparse
import urllib2
import json #定义更新action函数
def mediatypeupdate(mediatypeid,status,auth):
values = {'jsonrpc': '2.0',
'method': 'mediatype.update',
'params': {
"mediatypeid": mediatypeid,
"status": status
},
'auth': auth,
'id': ''
}
output = requestJson(url,values)
#定义读取状态函数
def triggerget(auth):
values = {'jsonrpc': '2.0',
"method":"trigger.get",
"params": {
"output": [
"triggerid",
"description",
"priority"
],
"filter": {
"value": 1
},
"expandData":"hostname",
"sortfield": "priority",
"sortorder": "DESC"
},
'auth': auth,
'id': ''
}
output = requestJson(url,values)
return output #定义通过ip获取主机id的函数
def ipgetHostsid(ip,url,auth):
values = {'jsonrpc': '2.0',
'method': 'host.get',
'params': {
'output': [ "host" ],
'filter': {
'ip': ip
},
},
'auth': auth,
'id': ''
}
output = requestJson(url,values)
return output #定义通过主机id获取开启关闭监控函数
def idupdatehost(status,hostid,url,auth):
values = {'jsonrpc': '2.0',
'method': 'host.update',
'params': {
"hostid": hostid,
"status": status
},
'auth': auth,
'id': ''
}
output = requestJson(url,values)
return output
#定义通过项目hostid获取itemid函数
def getHostsitemsid(hostid,itemsname,url,auth):
values = {'jsonrpc': '2.0',
'method': "item.get",
"params": {
"output": ["itemids"],
"hostids": hostid,
"filter":{
"key_": itemsname,
},
}, 'auth': auth,
'id': ''
}
output = requestJson(url,values)
if len(output)==0:
return output
else:
return output[0]['itemid'] #定义通过项目id获取监控项目最近值信息的函数
def getHostsitemsvalue(itemid,url,auth):
values = {'jsonrpc': '2.0',
'method': "history.get",
"params": {
"output": "extend",
"history":3,
"itemids":itemid,
"sortfield": "clock",
"sortorder": "DESC",
"limit":1,
}, 'auth': auth,
'id': ''
}
output = requestJson(url,values)
if len(output)==0:
return output
else:
return output[0]["value"] #定义更新读取状态action函数
def mediatypeget(mediatypeid,auth):
values = {'jsonrpc': '2.0',
'method': 'mediatype.get',
'params': {
"output": "extend", "filter": {
"mediatypeid":mediatypeid,
},
}, 'auth': auth,
'id': ''
}
output = requestJson(url,values)
if len(output)==0:
return output
else:
return output[0]['status'] #定义maintenance维修模式host函数
def maintenancecreate(maintenancename,active_since,active_till,hostid,auth):
values = {'jsonrpc': '2.0',
'method': 'maintenance.create',
'params': {
"name": maintenancename,
"active_since": active_since,
"active_till": active_till,
"hostids": [
hostid
],
"timeperiods": [
{
"timeperiod_type": 0,
"every": 1,
"dayofweek": 64,
"start_time": 64800,
"period": 3600
}
]
},
'auth': auth,
'id': ''
}
output = requestJson(url,values) #定义通过模糊获取关闭主机信息函数
def disabledhostget(url,auth):
values = {'jsonrpc': '2.0',
'method': 'host.get',
"params": {
"output": ["host"],
'selectInterfaces': [ "ip" ],
"filter": {
"status":1
}
},
'auth': auth,
'id': ''
}
output = requestJson(url,values)
return output #定义maintenance维修模式group函数
def maintenancecreategroup(maintenancename,active_since,active_till,groupid,auth):
values = {'jsonrpc': '2.0',
'method': 'maintenance.create',
'params': {
"name": maintenancename,
"active_since": active_since,
"active_till": active_till,
"groupids": [
groupid
],
"timeperiods": [
{
"timeperiod_type": 0,
"every": 1,
"dayofweek": 64,
"start_time": 64800,
"period": 3600
}
]
},
'auth': auth,
'id': ''
}
output = requestJson(url,values) #定义通过host groups named 获取groupid
def groupnameGroupid(groupname,auth):
values = {'jsonrpc': '2.0',
'method': 'hostgroup.get',
"params": {
"output": "extend",
"filter": {
"name": [
groupname
]
}
},
'auth': auth,
'id': ''
}
output = requestJson(url,values)
return output #定义模糊查询维护主机
def maintenanceget(url,auth):
values = {'jsonrpc': '2.0',
'method': 'maintenance.get',
"params": {
"output": "extend",
},
'auth': auth,
'id': ''
}
output = requestJson(url,values)
return output #定义批量恢复处于维护主机
def maintenancedelete(maintenanceid,url,auth):
values = {'jsonrpc': '2.0',
'method': 'maintenance.delete',
"params": [
maintenanceid
],
'auth': auth,
'id': ''
}
output = requestJson(url,values)
return output #定义通过hostid获取graphid的函数
def getgraphid(hostid,graphname,url,auth):
values = {'jsonrpc': '2.0',
'method': 'graph.get',
'params': {
"output": "name",
"hostids": hostid,
"sortfield": "name",
'filter': {
"name": graphname
}, },
'auth': auth,
'id': ''
}
output = requestJson(url,values)
return output # 调用:
#!/usr/bin/env python
#coding=utf-8
import urllib2
import sys
import json
import argparse
from login import *
from function import *
#登陆zabbix获取auth
auth = authenticate(url, username, password)
#状态0是启用监控,1是禁用监控
status=1
#定义操作ip
hostip='192.168.1.100'
#通过hostip获取zabbix hostid
hostids=ipgetHostsid(hostip,url,auth)
hostid=hostids[0]['hostid']
#通过主机id开启关闭监控
idupdatehost(status,hostid,url,auth)
zabbix api的更多相关文章
- python 调用zabbix api接口实现主机的增删改查
python程序调用zabbix系统的api接口实现对zabbix_server端主机的增删改查,使用相关功能时候,需要打开脚本中的相关函数. 函数说明: zabbixtools() 调用zabbi ...
- Zabbix Api的使用
API使用 zabbix官网文档:https://www.zabbix.com/documentation/2.2/manual/api, Zabbix API是基于JSON-RPC 2.0规格,具体 ...
- 基于curl 的zabbix API调用
1,认证并取得加密字段 curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0&q ...
- PHP通过ZABBIX API获取主机信息 VS 直接从数据库获取主机信息
最近项目需要获取linux主机的一些信息,如CPU使用率,内存使用情况等.由于我们本身就装了zabbix系统,所以我只用知道如何获取信息即可,总结有两种方法可以获取. 一.通过ZABBIX API获取 ...
- zabbix API基本使用方法介绍
前言: 以下内容根据zabbix 3.2官方文档总结:https://www.zabbix.com/documentation/3.2/manual/api 此文档只是简单的介绍API的基本使用,关于 ...
- 利用zabbix api添加、删除、禁用主机
python环境配置yum -y install python-pip安装argparse模块pip install -i https://pypi.douban.com/simple/ argpar ...
- python3调用zabbix api
前言 今天写了一个zabbix api,这里整理一下,过程中自己也学习了一些东西. 需求 我们需要查一个文件内容如下: cat /ops/flume_hosts node1 node2 需要把这个文件 ...
- python 调用zabbix api实现查询主机信息,输出所有主机ip
之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python ...
- Python通过Zabbix API获得数据
Zabbix API查询:https://www.zabbix.com/documentation/2.0/manual/appendix/api/api import json,urllib2 fr ...
- 03: zabbix API接口 对 主机、主机组、模板、应用集、监控项、触发器等增删改查
目录:Django其他篇 01: 安装zabbix server 02:zabbix-agent安装配置 及 web界面管理 03: zabbix API接口 对 主机.主机组.模板.应用集.监控项. ...
随机推荐
- poj 3281(网络流+拆点)
题目链接:http://poj.org/problem?id=3281 思路:设一个超级源点和一个超级汇点,源点与食物相连,饮料与汇点相连,然后就是对牛进行拆点,一边喜欢的食物相连,一边与喜欢的饮料相 ...
- Android无线测试之—UiAutomator UiObject API介绍四
输入文本与清除文本 一.输入文本与清除文本相关API 返回值 API 描述 boolean setText(String test) 在对象中输入文本 void clearTextField() 清除 ...
- Java中匿名内部类
匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象 ...
- Eclipse获取签名证书的SHA1
签名后的获取方式 :http://jingyan.baidu.com/article/3ea51489da3bc252e71bba59.html 未签名的获取方式:http://www.th7.cn/ ...
- jeesite学习笔记(一) 项目框架
JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台. 在github上,对jeesite平台有详细的介绍,这里稍作整理,给出项目的内置功能 ...
- pycharm 相关设置问题
pycharm设置自动换行 file→settings→Editor→General→勾选 Use soft wraps in eitor → ok
- iOS 如何在一个应用程序中调用另一个应用程序
原则上iOS的沙箱原理,是阻止一个app去访问其他app的资源乃至是系统底层的资源的但是我们可以通过一种变相的方式:通过对应的URL模式和其他程序进行通讯. iOS应用之间的调用步骤: 一, 调用自己 ...
- 160701、理解 Promise 的工作原理
Javascript 采用回调函数(callback)来处理异步编程.从同步编程到异步回调编程有一个适应的过程,但是如果出现多层回调嵌套,也就是我们常说的厄运的回调金字塔(Pyramid of Doo ...
- 原生JS返回顶部,带返回效果
有些网站当滑到一定高度时右下角会有一个按钮,你只要一点就可以直接返回顶部了.那这个功能是怎么做到的呢.其实不算太难: 首先我们先在网页中创建一个按钮,上面写上返回顶部,把它的样式改成固定定位,之后想要 ...
- 转SpringMVC Controller 返回值的可选类型
spring mvc 支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void. ModelAndView @RequestMap ...