说明:
1.python版本为:python2.7
2.zabbix版本为:zabbix3.4
3.通过python脚本调用zabbix的api接口可以实现批量增删改查主机的信息。
示例如下:
#-*- coding:utf-8 -*-
import requests, json
#初始化参数
server_url = "http://zabbix3.test.com/api_jsonrpc.php"
header = {"Content-Type": "application/json"}
username = "Admin"
password = "passwd123"
#登录zabbix并获取auth的token
login = {
"jsonrpc" : "2.0",
"method" : "user.login",
"params": {
'user': ""+username+"",
'password': ""+password+"",
},
"auth" : None,
"id" : 0,
}
auth = requests.post(server_url, data=json.dumps(login), headers=(header))
auth = auth.json()
#跟进ip地址获取主机的hostid
host_get = {
"jsonrpc":"2.0",
"method":"host.get",
"params":{
"output":["hostid","name"],
"filter":{"ip":["192.168.5.1","192.168.5.2"]}
},
"auth":""+auth['result']+"",
"id":1,
}
hostid_get = requests.post(server_url, data=json.dumps(host_get), headers=(header))
hostid_get = hostid_get.json()
hostid = hostid_get['result'][0]['hostid']
print hostid,hostid_get['result'][1]['hostid']
#根据组名获取groupid
group_get = {
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": "extend",
"filter": {
"name": [
"测试组"
]
}
},
"auth":""+auth['result']+"",
"id": 1
}
groupid_get = requests.post(server_url, data=json.dumps(group_get), headers=(header))
groupid_get = groupid_get.json()
groupid = groupid_get['result'][0]['groupid']
print groupid
#跟进模板名来获取templateid
template_get = {
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": "extend",
"filter": {
"host": [
"Template OS Linux",
]
}
},
"auth":""+auth['result']+"",
"id": 1
}
templateid_get = requests.post(server_url, data=json.dumps(template_get), headers=(header))
templateid_get = templateid_get.json()
templateid = templateid_get['result'][0]['templateid']
print templateid
#跟进proxy名获取proxyid
proxy_get = {
"jsonrpc": "2.0",
"method": "proxy.get",
"params": {
"output": "extend",
"selectInterface": "extend",
"filter": {
"host": [
"Zabbix-proxy-test",
]
}
},
"auth": ""+auth['result']+"",
"id": 1
}
proxy_get_id = requests.post(server_url, data=json.dumps(proxy_get), headers=(header))
proxy_get_id = proxy_get_id.json()
proxyid = proxy_get_id['result'][0]['proxyid']
print proxyid
#定义并添加一个主机到zabbix,指定组,模板,host和name名不支持中文
host_create = {
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "192.168.5.1",
"name": "this is a test-192.168.5.1",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.5.1",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": ""+groupid+""
}
],
"templates": [
{
"templateid": ""+templateid+""
}
],
"proxy_hostid": ""+proxyid+"",
"inventory_mode": 0
},
"auth":""+auth['result']+"",
"id": 1
}
host_create_id = requests.post(server_url, data=json.dumps(host_create), headers=(header))
host_create_id = host_create_id.json()
print host_create_id
#跟进hostid删除主机
host_delete = {
"jsonrpc": "2.0",
"method": "host.delete",
"params": [hostid],
"auth":""+auth['result']+"",
"id": 1
}
delete_id = requests.post(server_url, data=json.dumps(host_delete), headers=(header))
deleteid = delete_id.json()
print deleteid