Introdução:
Este script em Python se conecta à API do Zabbix, para obter informações valiosas sobre hosts e templates. Através de chamadas à API, o script realiza o login, recupera dados sobre os hosts, incluindo seus grupos e templates associados, e organiza essas informações em um arquivo CSV.
Autenticação: Utiliza as credenciais do Zabbix (usuário e senha) para autenticar-se na API.
Obtenção de Dados: Faz chamadas à API para extrair detalhes sobre hosts, incluindo seus grupos e templates associados.
Organização e Armazenamento: Estrutura os dados em um formato legível e armazena-os em um arquivo CSV.
Passo 1. Salve esse script para exportação dos dados em python:
import requests
import json
import csv
# Configurações da API do Zabbix
url = 'https://zabbix.dominio.com.br/api_jsonrpc.php'
headers = {'Content-Type': 'application/json'}
# Credenciais de autenticação
usuario = 'seu_user'
senha = 'sua_senha'
# Função para fazer uma chamada à API do Zabbix
def zabbix_api_request(method, params, auth_token=None):
data = {
'jsonrpc': '2.0',
'method': method,
'params': params,
'auth': auth_token,
'id': 1
}
response = requests.post(url, data=json.dumps(data), headers=headers)
result = response.json()
if 'error' in result:
raise Exception(f'Erro na chamada à API do Zabbix: {result["error"]["data"]}')
return result.get('result', None)
# Função para fazer login na API do Zabbix e obter o token de acesso
def zabbix_login(usuario, senha):
method = 'user.login'
params = {'user': usuario, 'password': senha}
response = zabbix_api_request(method, params)
return response
# Função para obter informações de hosts por grupo, incluindo templates
def obter_hosts_com_templates(auth_token):
method = 'host.get'
params = {
'output': ['host', 'name', 'groups'],
'selectGroups': 'extend',
'selectInterfaces': ['ip'],
'selectParentTemplates': ['templateid', 'name']
}
response = zabbix_api_request(method, params, auth_token)
if response is None:
raise Exception('Nenhuma resposta válida da chamada à API para obter hosts.')
hosts_com_templates = {}
for host in response:
for group in host.get('groups', []):
grupo_nome = group.get('name', 'Sem Grupo')
if grupo_nome not in hosts_com_templates:
hosts_com_templates[grupo_nome] = []
templates = [template['name'] for template in host.get('parentTemplates', [])]
hosts_com_templates[grupo_nome].append({
'hostname': host.get('host', ''),
'ip': host['interfaces'][0]['ip'] if host.get('interfaces') else '',
'templates': templates
})
return hosts_com_templates
# Função para escrever as informações em um arquivo CSV
def escrever_csv(info_hosts_com_templates):
with open('info_hosts_templates.csv', mode='w', newline='') as arquivo_csv:
writer = csv.writer(arquivo_csv)
writer.writerow(['Grupo', 'Hostname', 'IP', 'Templates'])
for grupo, hosts in info_hosts_com_templates.items():
for host in hosts:
writer.writerow([grupo, host['hostname'], host['ip'], ', '.join(host['templates'])])
# Faz login e obtém o token de autenticação
token_autenticacao = zabbix_login(usuario, senha)
# Obtém informações de hosts por grupo, incluindo templates
info_hosts_com_templates = obter_hosts_com_templates(token_autenticacao)
# Escreve as informações em um arquivo CSV
escrever_csv(info_hosts_com_templates)
Passo 2. Para funcionamento, precisaremos do python instalado e a biblioteca requests:
No linux:
# Instalar o Python3
sudo apt update
sudo apt install python3
# Instalar o pip3 (gerenciador de pacotes do Python)
sudo apt install python3-pip
# Instalar a biblioteca requests
pip3 install requests
No Windows:
- Instale o Python no repo: https://www.python.org/
- Certifique-se de marcar a opção "Add Python to PATH" durante a instalação.
# Atualizar o pip
python -m pip install --upgrade pip
# Instalar a biblioteca requests
pip install requests
Passo 3. Execute o script para gerar o relatório em .csv:
python3 script.py
- Pronto, o arquivo gerado chamado
info_hosts_templates.csv
será dessa forma:
Top comments (0)