69 lines
2.5 KiB
Python
69 lines
2.5 KiB
Python
import json
|
||
import sys
|
||
|
||
INPUT_FILE = "zabbix_hosts_export.json"
|
||
OUTPUT_FILE = "zabbix_hosts_export_NUCLEAR_CLEAN.json"
|
||
|
||
def main():
|
||
print("="*60)
|
||
print(" 🧹 LIMPADOR EXTREMO (DEEP CLEANER)")
|
||
print("="*60)
|
||
print("ℹ️ Modo Deep Clean: Removendo templates E itens/triggers/painéis.")
|
||
print(" O objetivo é importar apenas os HOSTS (Casca vazia).")
|
||
|
||
print(f"📂 Lendo: {INPUT_FILE}...", end=" ")
|
||
try:
|
||
with open(INPUT_FILE, 'r', encoding='utf-8') as f:
|
||
data = json.load(f)
|
||
print("✅ OK")
|
||
except FileNotFoundError:
|
||
print("❌ Arquivo não encontrado!")
|
||
sys.exit(1)
|
||
|
||
# Detecta onde estão os hosts
|
||
hosts_list = []
|
||
if 'zabbix_export' in data and 'hosts' in data['zabbix_export']:
|
||
hosts_list = data['zabbix_export']['hosts']
|
||
elif 'hosts' in data:
|
||
hosts_list = data['hosts']
|
||
|
||
count = 0
|
||
# Limpeza dentro dos hosts
|
||
if hosts_list:
|
||
keys_to_remove = ['templates', 'items', 'discovery_rules', 'httptests', 'triggers', 'graphs', 'dashboards', 'macros']
|
||
# Adicionei 'macros' só por garantia, embora as vezes seja útil manter.
|
||
# O erro atual é sobre trigger.
|
||
|
||
for host in hosts_list:
|
||
for key in keys_to_remove:
|
||
if key in host:
|
||
# REMOVER A CHAVE COMPLETAMENTE em vez de deixar lista vazia []
|
||
# Algumas versões do Zabbix não gostam de chaves vazias se não houver nada.
|
||
del host[key]
|
||
|
||
# Limpeza extra: Remover tags vazias ou inventory se necessário
|
||
# Mas o foco é o erro de trigger.
|
||
|
||
# Limpeza GLOBAL (Top Level)
|
||
# Zabbix export pode ter 'triggers' globais fora dos hosts
|
||
if 'zabbix_export' in data:
|
||
if 'triggers' in data['zabbix_export']:
|
||
print("⚠️ Encontrado bloco global de 'triggers'. Removendo...")
|
||
del data['zabbix_export']['triggers']
|
||
|
||
if 'graphs' in data['zabbix_export']:
|
||
del data['zabbix_export']['graphs']
|
||
|
||
print(f"✨ Hosts limpos profundamente: {count}")
|
||
print(" (Templates, Itens, Triggers e LLDs removidos TOTALMENTE)")
|
||
|
||
print(f"💾 Salvando: {OUTPUT_FILE}...", end=" ")
|
||
with open(OUTPUT_FILE, 'w', encoding='utf-8') as f:
|
||
json.dump(data, f, indent=4, ensure_ascii=False)
|
||
print("✅ Sucesso!")
|
||
|
||
print("\n👉 Use este arquivo CLEAN no novo Zabbix para importar APENAS os hosts.")
|
||
|
||
if __name__ == "__main__":
|
||
main()
|