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接口 对 主机.主机组.模板.应用集.监控项. ...
随机推荐
- hadoop入门学习整理
技术性网站 1.http://dongxicheng.org/ 2.http://www.iteblog.com/ 3.http://www.cnblogs.com/shishanyuan/p/414 ...
- mac上用的svn
Cornerstone是Mac上最佳的SVN管理工具 能破解最好,不会破解的表示mac的最新版本似乎对这款软件不太友好.
- 160714、解决虚拟机上的tomcat无法被主机访问的问题
备注:我虚拟机是centos 6.5 在wmware中安装linux后安装好数据库,JDK及tomcat后启动服务,虚拟机中可以访问,但是主机却无法访问,但是同时主机和虚拟机之间可以ping的通 ...
- SQL server中使用临时表存储数据
将查询出来的数据直接用“INTO #临时表名称”的方式完成临时表的创建及数据的插入 SELECT * INTO #temp_NowStatusFROM Test SELECT * FROM #temp ...
- 使用synergyc共享键鼠
通常情况下我们经常同时操作两台或者多台电脑, 这样就会存在多个键盘鼠标来回切换的问题. 那么我们主要的目标就是怎么在多个电脑上共享一套键盘鼠标,而且可以轻松的来回切换呢. 网上有很多的解决方案,这里我 ...
- cygwin简介,安装及卸载(体验UNIX & Linux环境)
对于爱好者或初学者来说,为了体验UNIX & Linux环境,去安装虚拟机或双系统稍显麻烦,cygwin是一个很好的选择 具/原料 安装windows的电脑一台(可以联网) 法/步骤 ...
- Spoken English Practice(You know we can't afford that. How do other people do it? Other people make more twenty-four thousand a year. )
绿色:连读: 红色:略读: 蓝色:浊化: 橙色:弱读 下划线_为浊化 口语蜕变(2017/7/9) 英 ...
- Linux磁盘管理命令(fdisk,mount,umount,mkfs)
查看磁盘:fdisk -l 一块磁盘可以分14个分区 [root@wendyhost ~]# fdisk -l Disk /dev/sda: 64.4 GB, 64424509440 bytes 25 ...
- python基础之类和对象、对象之间的交互、类名称空间与对象/实例名称空间
一 面向对象初识 Python要么是面向过程要么是面向对象. 概念及优缺点: 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东 ...
- Oracle 11g修改字符集AL32UTF8为ZHS16GBK
oracle11g更改字符集AL32UTF8为ZHS16GBK当初安装oracle的时候选择的默认安装,结果字符集不是以前经常用的16GBK,要改字符集,从网上找到了方法并试了一下,果然好用! 具体如 ...