python3 批量添加 zabbix 主机,绑定主机群组
python3 批量添加 zabbix 主机,绑定主机群组
代码:
import requests import json # header headers = {'Content-Type': 'application/json-rpc'} # URL + /api_jsonrpc.php zx_url = 'http://192.168.3.241/api_jsonrpc.php' # 用户名 user = 'Admin' # 密码 password = '******' # 想要添加到什么组 host_groups = '测试' # 端口 ports = '10050' # 字典的形式传入 hostname 和 IP 地址 host_message = {'agent 01': '192.168.3.1', 'agent 02': '192.168.3.2', 'agent 03': '192.168.3.3', 'agent 04': '192.168.3.4' } # 登陆,获取用户身份验证令牌,每次登陆令牌都不一样。 def login_zabbix(): data = { "jsonrpc": "2.0", "method": "user.login", "params": { "user": user, "password": password }, "id": 1 } r = requests.post(zx_url, headers=headers, data=json.dumps(data)) result = r.json() auth = result['result'] # 返回身份验证令牌 return auth # 获取需要的组的ID,后面添加主机通过组ID添加 def get_host_group(): data = { "jsonrpc": "2.0", "method": "hostgroup.get", "params": { "output": "extend", "filter": { "name": [ host_groups, # 主机组的名字 ] } }, "auth": auth, # 用户身份令牌 "id": 1 } r = requests.post(zx_url, headers=headers, data=json.dumps(data)) result = r.json() group_id = result['result'][0]['groupid'] # 返回组ID return group_id # 添加主机 def add_agent(auth, group_id, host, ip): data = { "jsonrpc": "2.0", "method": "host.create", "params": { "host": host, # zabbix上显示的主机名字 "interfaces": [ { "type": 1, "main": 1, "useip": 1, "ip": ip, # IP地址 "dns": "", "port": ports # 端口 } ], "groups": [ { "groupid": group_id # 组ID } ], }, "auth": auth, # 用户身份令牌 "id": 1 } r = requests.post(zx_url, headers=headers, data=json.dumps(data)) data = r.json() # 成功输出host ID if 'result' in data: print('''\033[1;32m add %s success. hostid: %s \033[0m \n''' % (ip, data['result']['hostids'][0])) # 失败输出为什么 if 'result' not in data: print('''\033[1;31m add %s is error!!! error code: %s error message: %s error data: %s \033[0m \n''' % (ip, data['error']['code'], data['error']['message'], data['error']['data'])) # 主程序 if __name__ == '__main__': # 获取令牌 auth = login_zabbix() # 获取组ID group_id = get_host_group() # 添加主机 for key in host_message: add_agent(auth, group_id, key, host_message[key])
使用说明(只需要更改这些地方的变量的值):
正确输出:
错误输出: