#!/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的更多相关文章

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

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

  2. Zabbix Api的使用

    API使用 zabbix官网文档:https://www.zabbix.com/documentation/2.2/manual/api, Zabbix API是基于JSON-RPC 2.0规格,具体 ...

  3. 基于curl 的zabbix API调用

    1,认证并取得加密字段 curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0&q ...

  4. PHP通过ZABBIX API获取主机信息 VS 直接从数据库获取主机信息

    最近项目需要获取linux主机的一些信息,如CPU使用率,内存使用情况等.由于我们本身就装了zabbix系统,所以我只用知道如何获取信息即可,总结有两种方法可以获取. 一.通过ZABBIX API获取 ...

  5. zabbix API基本使用方法介绍

    前言: 以下内容根据zabbix 3.2官方文档总结:https://www.zabbix.com/documentation/3.2/manual/api 此文档只是简单的介绍API的基本使用,关于 ...

  6. 利用zabbix api添加、删除、禁用主机

    python环境配置yum -y install python-pip安装argparse模块pip install -i https://pypi.douban.com/simple/ argpar ...

  7. python3调用zabbix api

    前言 今天写了一个zabbix api,这里整理一下,过程中自己也学习了一些东西. 需求 我们需要查一个文件内容如下: cat /ops/flume_hosts node1 node2 需要把这个文件 ...

  8. python 调用zabbix api实现查询主机信息,输出所有主机ip

    之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python ...

  9. Python通过Zabbix API获得数据

    Zabbix API查询:https://www.zabbix.com/documentation/2.0/manual/appendix/api/api import json,urllib2 fr ...

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

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

随机推荐

  1. 【分享】Collecting all the cheat sheets

    http://overapi.com/   这个网站可以查询到所有与编程相关的各种技术,并给出详细的知识点(干货).

  2. linux配置sftp用户的chroot步骤(用户的sftp根文件夹)

    1.编辑ssh中的sftp的配置,命令可能是:vi /etc/ssh/sshd_config 在这个文件里最后增加 #限制sftp组的用户使用sftp时在自己的home文件夹下 Match Group ...

  3. iOS 计算某个月的天数 计算某天的星期

    // 某年某月的天数 - (NSInteger)dayCount:(NSInteger)years { NSInteger count = ; ; i <= ; i++) { == i) { = ...

  4. PAT 甲级 1003Emergency(Dijkstra最短路)

    1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...

  5. Fluent Ribbon 第八步 其他控件

    前七节将Ribbon的功能大致介绍了一番,本节来介绍一些特殊控件的使用 DropDownButton控件 当前控件是显示下拉功能的基本组件,其配合Gallery能实现诸多特殊功能,代码如下所示 < ...

  6. JS去遍历Table的所有单元格中的内容

    用JS去遍历Table的所有单元格中的内容,可以用如下JS代码实现 function GetInfoFromTable(tableid) { var tableInfo = ""; ...

  7. Unicode 和 UTF-8 是什么关系?

    2015-10-14 10:08    评论: 9 收藏: 4 转载自: http://huoding.com/2015/10/13/472作者: 火丁笔记本文地址:https://linux.cn/ ...

  8. Java方法区和永久代

    Java方法区和永久代 目前有三大Java虚拟机:HotSpot,oracle JRockit,IBM J9. JRockit是oracle发明的,用于其WebLogic服务器,IBM JVM是IBM ...

  9. 字符串 (string)与字节数组(byte[])之间的转换

    string str = "abc" //字符串转成编码为GB2312的byte[] byte[] pData =System.Text.Encoding.GetEncoding( ...

  10. django自定义模板和过滤器

    -自定义过滤器 -1 先app是不是已经在setting中注册 -2 在app下创建一个templatetags(****名字不能变***)的文件夹(模块) -3 在模块下创建一个py文件,名字随意: ...