'''
2019.6.19
zabbix API 修改主机
'''
import json,requests
headers={"Content-Type":"application/json"}
url = 'http://www.zabbix.com/zabbix/api_jsonrpc.php'
def getAuth(user,password):
try:
global headers, url
data = json.dumps({
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": user,
"password": password
},
"id": 1,
})
res = requests.post(url,data=data,headers=headers)
auth = res.json().get('result','')
return auth
except Exception as err:
pass
def getHost(auth):
try:
global headers,url
data = json.dumps({
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"],
"selectInterfaces": [
"interfaceid",
"ip"]},
"id": 2,
"auth": auth
})
res = requests.post(url,data=data,headers=headers)
host = res.json()
return host
except:
pass
def getGroupid(auth,groupname):
try:
global headers, url
data = json.dumps({
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": "extend",
"filter": {
"name": [groupname]}},
"auth": auth,
"id": 1
})
res = requests.post(url,data=data,headers=headers)
groupid = res.json()['result'][0]['groupid']
return groupid
except:
pass
def getTempid(auth,tempname):
try:
global headers, url
# print(templist)
data = json.dumps(
{
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": "extend",
"filter": {
"host": tempname}},
"auth": auth,
"id": 1}
)
res = requests.post(url,data=data,headers=headers)
tempid = []
for i in range(len(res.json()['result'])):
id = res.json()['result'][i]['templateid']
tempid.append(id)
return tempid
except:
pass
def createHost(auth,hostname,ip,port,groupid,templateid):
try:
global headers, url
templist = []
# print(templateid)
for i in templateid:
var = {}
var['templateid'] = i
templist.append(var)
data = json.dumps({
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": hostname,
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": ip,
"dns": "",
"port": port}],
"groups": [{"groupid": groupid}],
"templates": templist,},
"auth": auth,
"id": 1})
res = requests.post(url,data=data,headers=headers)
if 'result' in res.text:
print ('主机: %s -------添加成功' %hostname)
else:
print ('主机: %s -------添加失败'%hostname)
except:
pass
def host_get(auth,hostName=''):
try:
global url,headers
data = json.dumps({
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": "extend",
"selectParentTemplates": ["host"],
"filter": {"host": hostName}
},
"auth": auth,
"id": 1
})
res = requests.post(url=url, data=data, headers=headers)
response = json.loads(res.content)
print("主机数量: \33[31m {} \33[0m".format(len(response['result'])))
# print(response['result'])
for host in response['result']:
status = {"0": "OK", "1": "Disabled"}
available = {"0": "Unknown", "1": "available", "2": "Unavailable"}
# print host
if len(hostName) == 0:
print("HostID : %s HostName : %s Status :\33[32m%s\33[0m Available :\33[31m%s\33[0m" % (
host['hostid'], host['name'], status[host['status']], available[host['available']]))
else:
print("HostID : %s HostName : %s Status :\33[32m%s\33[0m Available :\33[31m%s\33[0m" % (
host['hostid'], host['name'], status[host['status']], available[host['available']]))
return host['hostid']
except:
pass
def host_delete(auth, hostid):
try:
global url,headers
data = json.dumps({
"jsonrpc": "2.0",
"method": "host.delete",
"params": [hostid],
"auth": auth,
"id": 1
})
res = requests.post(url=url, data=data, headers=headers)
response = json.loads(res.content)
print ("主机:%s -----------已经删除 !"%hostid)
except:
pass
if __name__ == '__main__':
user = 'admin'
password = 'password'
#主机群组名
groupname = 'Linux servers'
#模版名
# tempname = ["Template OS Linux","Template DB MySQL"]
tempname = ["Template OS Linux"]
#获取key
auth = getAuth(user,password)
#获取组id
groupid = getGroupid(auth,groupname)
#获取模版id
tempid = getTempid(auth,tempname)
print('请先修改主机列表后执行')
# createhostlist = [
# "center,172.17.0.12,10050"
# "logserver,172.17.0.12,10050"
# "testserver,172.17.0.12,10050"
# ]
# for host in createhostlist:
# list1 = host.split(',')
# hostname = list1[0]
# hostip = list1[1]
# port = list1[2]
# createHost(auth,hostname,hostip,port,groupid,tempid)
# delhostlist = [
# "dxc_0_12,172.17.0.12,10050"
# ]
#
# for host in delhostlist:
# list1 = host.split(',')
# hostname = list1[0]
# hostid = host_get(auth,hostname)
# host_delete(auth,hostid)