共计 1960 个字符,预计需要花费 5 分钟才能阅读完成。
话不多说直接上脚本,自用的话替换一下脚本里面的 API 地址以及 zabbix 的用户名和密码即可。
#!/usr/bin/env python
# encoding=utf-8
import datetime
import json
import time
import requests
def getToken(url, post_headers, url_user, url_password):
post_data = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": url_user,
"password": url_password
},
"id": 1
}
ret = requests.post(url, data=json.dumps(post_data), headers=post_headers)
return json.loads(ret.text).get("result")
def timestamp_to_string(timestamp):
# 转换成 localtime
time_local = time.localtime(timestamp)
# 转换成新的时间格式 (2016-05-05 20:28:54)
dt = time.strftime("%Y-%m-%d %H:%M:%S", time_local)
return dt
def get_host_discovery_list(url, auth, post_headers,hostid):
post_data = {
"jsonrpc": "2.0",
"method": "discoveryrule.get",
"params": {
"output": "extend",
"hostids": hostid,
},
"auth": auth,
"id": 1
}
ret = requests.post(url, data=json.dumps(post_data), headers=post_headers)
ret_dict = json.loads(ret.text)
return ret_dict
def get_all_host_list(url, auth, post_headers):
post_data = {
"jsonrpc": "2.0",
"method": "host.get",
"params": {"output":["hostid", "name"], "filter": {"status": 0}},
"auth": auth,
"id": 1
}
ret = requests.post(url, data=json.dumps(post_data), headers=post_headers)
ret_dict = json.loads(ret.text)
return ret_dict
if __name__ == '__main__':
# zabbix 监控系统接口地址
url = "http://xxxx.com/zabbix/api_jsonrpc.php"
post_headers = {'Content-Type': 'application/json'}
url_user = ""url_passwd =""
auth = getToken(url, post_headers, url_user, url_passwd) # 获取 token 值
# print(get_host_discovery_list(url,auth,post_headers))
all_host_list = get_all_host_list(url,auth,post_headers)['result']
# print(all_host_list)
count = 0
error_host_list = []
error_msg_list = []
for host in all_host_list:
host_id = host['hostid']
host_name = host['name']
print(count)
count= count + 1
auto_discovery_list = get_host_discovery_list(url,auth,post_headers, host_id)['result']
for auto in auto_discovery_list:
is_error = auto['error']
if is_error:
if 'Unsupported item key' in is_error:
error_host_list.append(host_name)
error_msg_list.append(is_error)
error_host_list_unique = set(error_host_list)
for error in error_host_list_unique:
print(error)
正文完
发表至: Zabbix运维开发
2022-05-02