例:取消链接并清理某个主机组中所有主机的同一个模板
需要修改的地方:
1. 变量 Groupid :定义需要删除模板的主机组id
2. 变量 Templateid :定义要取消链接并清理的模板id
3. 初始化信息根据个人环境修改
import json
import urllib.request
Hostids = []
Groupid = 4
Templateid = 10001
class ZabbixApi:
def __init__(self): # 初始化信息 修改
self.url = 'http://192.10.xx.xx/api_jsonrpc.php'
self.user = 'Admin'
self.passwd = 'zabbix'
self.header = {"Content-Type": "application/json-rpc"}
# self.auth = self.UserLogin()
def UserLogin(self): # api登录操作
data = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": self.user,
"password": self.passwd
},
"id": 0
}
return self.UrlRequest(data)
def UrlRequest(self, data): ##
request = urllib.request.Request(self.url, json.dumps(data).encode('utf-8'), self.header)
result = urllib.request.urlopen(request)
response = json.loads(result.read().decode('utf-8'))
return response
def GetHostsid(self): # 获取该主机组所有hostid
data = {
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"groupids": Groupid,
"selectHosts": "hostid"
},
"auth": token,
"id": 1
}
return self.UrlRequest(data)
def DeleteTemplate(self): # 取消链接并清理模板
data = {
"jsonrpc": "2.0",
"method": "host.massremove",
"params": {
"hostids": Hostids,
"templateids_clear": Templateid
},
"auth": token,
"id": 1
}
self.UrlRequest(data)
return "模板已清理完成!"
if __name__ == '__main__':
response = ZabbixApi().UserLogin()
token = response['result']
print(f'身份令牌为"{token}"')
info = ZabbixApi().GetHostsid()
hostids = info['result'][0]['hosts']
num = len(hostids)
for i in range(num):
Hostids.append(hostids[i]['hostid'])
txt = ZabbixApi().DeleteTemplate()
print(txt)