You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

138 lines
4.3 KiB

import requests
import json
class ZabbixAPI:
def __init__(self, user, password, zabbix_url):
# Zabbix URL
self.zabbix_url = zabbix_url
self.header = {"Content-Type": "application/json"}
# login information
self.user = user
self.password = password
self.auth = ""
self.templates_id = []
self.groups_id = []
def login(self):
# Parameter for zabbix API
parameter = json.dumps({
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": self.user,
"password": self.password
},
"id": 1,
"auth": None
})
# Get response text from zabbix API by using POST
response = requests.post(self.zabbix_url, parameter, headers=self.header).text
# Get key from response text
try:
self.auth = json.loads(response)['result']
except KeyError:
print("Login failed")
print("Login Success")
print(self.auth)
def get_template_id(self, templates):
# Init variable for templates_id in list
self.templates_id = []
# Parameter for Get TemplateID in Zabbix API
parameter = json.dumps({
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": "extend",
"filter": {
"host": templates
}
},
"auth": self.auth,
"id": 1
})
# Get response text from zabbix API by using POST
response = requests.post(self.zabbix_url, parameter, headers=self.header).text
# Append list templates_id from response text
for i in json.loads(response)['result']:
self.templates_id.append(str(i['templateid']))
print(self.templates_id)
def get_group_id(self, groups):
# Init variable for groups_id in list
self.groups_id = []
# Parameter for Get GroupID in Zabbix API
parameter = json.dumps({
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": "extend",
"filter": {
"name": groups
}
},
"auth": self.auth,
"id": 1
})
# Get response text from zabbix API by using POST
response = requests.post(self.zabbix_url, parameter, headers=self.header).text
# Append list templates_id from response text
for i in json.loads(response)['result']:
self.groups_id.append(str(i['groupid']))
print(self.groups_id)
def create_host(self, hostname, interface_ip, interface_port):
# Put the group ID and template ID into dict
group = []
template = []
for ids in self.groups_id:
group.append({"groupid": str(ids)})
for ids in self.templates_id:
template.append({"templateid": str(ids)})
# Parameter for CreateHost in Zabbix API
parameter = json.dumps({
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": hostname,
#"name": hostname,
"interfaces": [{
"type": 1,
"main": 1,
"useip": 1,
"ip": interface_ip,
"dns": "",
"port": interface_port
}],
"groups": group,
"templates": template
},
"auth": self.auth,
"id": 1
})
# Create host with zabbix API by using POST
response = requests.post(self.zabbix_url, parameter, headers=self.header).text
print(response)
def get_host_id(self, hostname):
self.host_id = []
parameter = json.dumps({
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"host"
],
"search": {
"host": hostname
}
},
"auth": self.auth,
"id": 1
})
response = requests.post(self.zabbix_url, parameter, headers=self.header).text
for i in json.loads(response)['result']:
self.host_id.append(str(i['hostid']))
print(self.host_id)