zabbix批量修改主機名
阿新 • • 發佈:2021-12-16
目錄
一.說明
通過zabbix開放的api進行批量操作,預設主機名是IP地址,尤其是自動發現的時候批量新增,如果挨個手動改會很累,這裡配置批量加入。
新建檔案ips.txt
主機名 IP
主機名 IP
主機名 IP
二.批量更新主機名
本文版權歸作者所有,歡迎轉載,請務必新增原文連結。#!/usr/bin/python3 # _*_ coding:utf-8 _*_ import json import requests #zabbix伺服器的IP地址 zabbix_ip = "127.0.0.1" #zabbix的使用者名稱 zabbix_user = "Admin" #zabbix的密碼 zabbix_pass = "123456" #zabbix api介面地址 url = "http://" + zabbix_ip + ":8000/api_jsonrpc.php" #zabbix api定義的訪問頭部資訊 post_header = {'Content-Type': 'application/json'} # 呼叫zabbix api需要身份令牌auth def get_auth(): post_data = { "jsonrpc": "2.0", "method": "user.login", "params": { "user": zabbix_user, "password": zabbix_pass }, "id": "1" } ret = requests.post(url, data=json.dumps(post_data), headers=post_header) zabbix_ret = json.loads(ret.text) print(zabbix_ret) if 'result' not in zabbix_ret: print('login error') else: auth = zabbix_ret.get('result') return auth # 以IP資訊獲取主機id def get_hostid(): hostid_get = { "jsonrpc": "2.0", "method": "host.get", "params": { "output": "extend", "filter": { "host": [ host_ip ] } }, "auth": Token, "id": 2, } res2 = requests.post(url, data=json.dumps(hostid_get), headers=post_header) res3 = res2.json() #print(res3) res4 = res3['result'] try: host_id = res4[0]['hostid'] return host_id except: print("zabbix中不存在,跳過") return "不行" # 以主機ID來修改主機名 def update_hostname(): hostname_update = { "jsonrpc": "2.0", "method": "host.update", "params": { "hostid": host_id, "name": host_name }, "auth": Token, "id": 3 } res10 = requests.post(url, data=json.dumps(hostname_update), headers=post_header) res11 = res10.json() #print(res11) if __name__ == '__main__': ''' ips.txt裡的檔案內容: 主機名1 ip1 主機名2 ip2 主機名3 ip3 ''' with open("ips.txt", "r", encoding="utf8") as f: for line in f: line = line.split(" ") host_name = line[0] host_ip = line[1].strip() #print(host_name) #print(host_ip) Token = get_auth() #print(Token) host_id = get_hostid() if host_id == "不行": continue #print(host_id) update_hostname() print(host_name,host_ip,"已新增完成")