DEV Community

Railander Marques
Railander Marques

Posted on

2

Script de Exportação de Hosts do Zabbix para CSV

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)
Enter fullscreen mode Exit fullscreen mode



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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode



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:

Image description

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay