#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib2
import sys
import json
class zabbixtools:
def __init__(self):
self.url = "http://192.168.1.100/zabbix/api_jsonrpc.php"
self.header = {"Content-Type": "application/json"}
self.authID = self.user_login()
def user_login(self):
data = json.dumps(
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "admin",
"password": "admin"
},
"id": 0
})
request = urllib2.Request(self.url,data)
for key in self.header:
request.add_header(key,self.header[key])
try:
result = urllib2.urlopen(request)
except URLError as e:
print "Auth Failed, Please Check Your Name And Password:",e.code
else:
response = json.loads(result.read())
result.close()
authID = response['result']
return authID
def get_data(self,data,hostip=""):
request = urllib2.Request(self.url,data)
for key in self.header:
request.add_header(key,self.header[key])
try:
result = urllib2.urlopen(request)
except URLError as e:
if hasattr(e,'reason'):
print "we Failed to reach a server"
print 'reason:',e.reason
elif hasattr(e,'code'):
print "the server could not fulfaild the request"
print "error code:",e.code
return 0
else:
response = json.loads(result.read())
result.close()
return response
def host_get(self,hostip):
# 生成json格式数据
print self.authID
data = json.dumps(
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output":["hostid","name","status","host", "ip", "host"],
"filter": {"host": [hostip]}
},
"auth": self.authID,
"id": 1
})
print self.get_data(data)
res = self.get_data(data)['result']
if (res != 0) and (len(res) != 0):
host = res[0]
# print host
if host['status'] == 1:
print "\x1b[1;32mHost_IP: %s Host_Name: %s down\x1b[0m" % (host['host'],host['name'])
return host['hostid']
else:
print host
print "\x1b[1;32mHost_ip: %s Host_Name: %s up\x1b[0m" % (host['host'],host['name'])
return host['hostid']
else:
print "host_get error please check define host_get()"
return 0
def hostgroup_get(self):
data = json.dumps(
{
"jsonrpc":"2.0",
"method":"hostgroup.get",
"params":{
"output":"extend"
},
"auth":self.authID,
"id":1
})
res = self.get_data(data)
if 'result' in res.keys():
res = res['result']
# print res
if (res != 0) and (len(res) != 0):
for host in res:
print "\x1b[1;32mHost_id: %s Hostgroup_name: %s\x1b[0m" % (host['groupid'],host['name'])
else:
print "Host_Group info Gets the Error"
def template_get(self):
data = json.dumps(
{
"jsonrpc":"2.0",
"method":"template.get",
"params":{
"output":"extend"
},
"auth":self.authID,
"id":1
})
res = self.get_data(data)
if 'result' in res.keys():
res = res['result']
if (res != 0) and (len(res) != 0):
for host in res:
print "\x1b[1;32mTemplate_id: %s Template_name: %s\x1b[0m" % (host['templateid'],host['name'])
else:
print "Templateid gets the error"
def host_delete(self):
hostip = raw_input("please input your delete hostip:")
hostid = self.host_get(hostip)
if hostid == 0:
print "\x1b[1;31mhost_get error please check it"
sys.exit()
# print hostid
data = json.dumps(
{
"jsonrpc":"2.0",
"method":"host.delete",
"params":[{"hostid":hostid}],
"auth":self.authID,
"id":1
})
res = self.get_data(data)['result']
if 'hostids' in res.keys():
print "\x1b[1;32m%s删除成功!!!\x1b[0m" % hostip
else:
print "\x1b[1;31m%s删除失败!!!\x1b[0m" % hostip
def host_create(self):
hostip = raw_input("please input hostip:")
groupid = raw_input("please input groupid:")
templateid = raw_input("please input templateid:")
g_list = []
t_list = []
for i in groupid.split(','):
var = {}
var['groupid'] = i
g_list.append(var)
for i in templateid.split(','):
var = {}
var['templateid'] = i
t_list.append(var)
if hostip and groupid and templateid:
data = json.dumps(
{
"jsonrpc":"2.0",
"method":"host.create",
"params":{
"host":hostip,
"interfaces":[
{
"type":1,
"main":1,
"useip":1,
"ip":hostip,
"dns":"",
"port":"10050",
}
],
"groups":g_list,
"templates":t_list
},
"auth":self.authID,
"id":1
})
res = self.get_data(data,hostip)
if 'result' in res:
res = res['result']
if 'hostids' in res.keys():
print "\x1b[1;32m%s \t\t主机添加成功\x1b[0m" % hostip
else:
print "\x1b[1;31m%s \t\t主机添加失败\x1b[0m" % hostip
else:
print "您输入的参数有误."
if __name__ == '__main__':
a = zabbixtools()
#print a.hostgroup_get()
#a.hostgroup_get()
#a.template_get()
#a.host_create()
#a.host_delete()
a.host_get('yq70')
转载请注明:爱开源 » Zabbix API python版本