#!/bin/bash

# Script: system_report_html.sh
# Descrição: Coleta informações do sistema e gera relatório em HTML

# Configurações
REPORT_DIR="/var/log/system_reports"
REPORT_FILE="${REPORT_DIR}/system_report_$(date +%Y%m%d_%H%M%S).html"
LATEST_LINK="${REPORT_DIR}/latest_report.html"

# Criar diretório se não existir
mkdir -p "$REPORT_DIR"

# Coletar dados
HOSTNAME=$(hostname)
DATE=$(date '+%d/%m/%Y %H:%M:%S')
CPU_MODEL=$(grep "model name" /proc/cpuinfo | head -1 | cut -d':' -f2 | xargs)
CPU_CORES=$(nproc)
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
LOAD_AVG=$(uptime | awk -F'load average:' '{print $2}' | xargs)

MEM_TOTAL=$(free -h | grep "^Mem:" | awk '{print $2}')
MEM_USED=$(free -h | grep "^Mem:" | awk '{print $3}')
MEM_FREE=$(free -h | grep "^Mem:" | awk '{print $4}')
SWAP_TOTAL=$(free -h | grep "^Swap:" | awk '{print $2}')
SWAP_USED=$(free -h | grep "^Swap:" | awk '{print $3}')

DISK_INFO=$(df -h | grep -E "^/dev/" | awk '{print "<tr><td>" $1 "</td><td>" $2 "</td><td>" $3 "</td><td>" $4 "</td><td>" $5 "</td><td>" $6 "</td></tr>"}')

# Coletar temperatura
if command -v sensors &> /dev/null; then
    TEMP_INFO=$(sensors | grep -E "Core|Package|temp" | head -5 | sed 's/$/<br>/')
elif [ -d "/sys/class/thermal" ]; then
    TEMP_INFO=""
    for zone in /sys/class/thermal/thermal_zone*; do
        if [ -f "$zone/temp" ]; then
            temp=$(cat "$zone/temp")
            temp_c=$((temp / 1000))
            zone_name=$(basename "$zone")
            TEMP_INFO="${TEMP_INFO}${zone_name}: ${temp_c}°C<br>"
        fi
    done
else
    TEMP_INFO="Informação de temperatura não disponível"
fi

KERNEL=$(uname -r)
UPTIME=$(uptime -p)
USERS=$(who | wc -l)
PROCESSES=$(ps aux | wc -l)

# Gerar HTML
cat > "$REPORT_FILE" << EOF
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Relatório do Sistema - $HOSTNAME</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 20px;
            background-color: #f5f5f5;
        }
        .container {
            max-width: 1200px;
            margin: 0 auto;
            background-color: white;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
        }
        h1 {
            color: #333;
            border-bottom: 3px solid #4CAF50;
            padding-bottom: 10px;
        }
        h2 {
            color: #555;
            background-color: #f0f0f0;
            padding: 8px;
            border-left: 4px solid #4CAF50;
            margin-top: 20px;
        }
        .info {
            background-color: #e8f5e9;
            padding: 10px;
            border-radius: 4px;
            margin: 10px 0;
        }
        table {
            width: 100%;
            border-collapse: collapse;
            margin: 10px 0;
        }
        th, td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: left;
        }
        th {
            background-color: #4CAF50;
            color: white;
        }
        tr:nth-child(even) {
            background-color: #f2f2f2;
        }
        .footer {
            margin-top: 30px;
            padding-top: 10px;
            border-top: 1px solid #ddd;
            text-align: center;
            font-size: 12px;
            color: #777;
        }
        .metric {
            display: inline-block;
            margin: 10px;
            padding: 15px;
            background-color: #f9f9f9;
            border-radius: 4px;
            min-width: 150px;
        }
        .metric-value {
            font-size: 24px;
            font-weight: bold;
            color: #4CAF50;
        }
        .metric-label {
            font-size: 12px;
            color: #777;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>📊 Relatório do Sistema</h1>
        <div class="info">
            <strong>Hostname:</strong> $HOSTNAME<br>
            <strong>Data/Hora:</strong> $DATE<br>
            <strong>Kernel:</strong> $KERNEL
        </div>
        
        <h2>🖥️ Informações da CPU</h2>
        <div class="metric">
            <div class="metric-label">Modelo</div>
            <div class="metric-value">$CPU_MODEL</div>
        </div>
        <div class="metric">
            <div class="metric-label">Núcleos</div>
            <div class="metric-value">$CPU_CORES</div>
        </div>
        <div class="metric">
            <div class="metric-label">Uso da CPU</div>
            <div class="metric-value">${CPU_USAGE}%</div>
        </div>
        <div class="metric">
            <div class="metric-label">Load Average</div>
            <div class="metric-value">$LOAD_AVG</div>
        </div>
        
        <h2>💾 Informações de Memória</h2>
        <div class="metric">
            <div class="metric-label">Memória Total</div>
            <div class="metric-value">$MEM_TOTAL</div>
        </div>
        <div class="metric">
            <div class="metric-label">Memória Usada</div>
            <div class="metric-value">$MEM_USED</div>
        </div>
        <div class="metric">
            <div class="metric-label">Memória Livre</div>
            <div class="metric-value">$MEM_FREE</div>
        </div>
        <div class="metric">
            <div class="metric-label">Swap Total</div>
            <div class="metric-value">$SWAP_TOTAL</div>
        </div>
        <div class="metric">
            <div class="metric-label">Swap Usada</div>
            <div class="metric-value">$SWAP_USED</div>
        </div>
        
        <h2>💿 Informações de Disco</h2>
        <table>
            <thead>
                <tr>
                    <th>Sistema de Arquivos</th>
                    <th>Tamanho</th>
                    <th>Usado</th>
                    <th>Livre</th>
                    <th>Uso%</th>
                    <th>Ponto de Montagem</th>
                </tr>
            </thead>
            <tbody>
                $DISK_INFO
            </tbody>
        </table>
        
        <h2>🌡️ Informações de Temperatura</h2>
        <div class="info">
            $TEMP_INFO
        </div>
        
        <h2>📈 Informações Adicionais</h2>
        <div class="metric">
            <div class="metric-label">Uptime</div>
            <div class="metric-value">$UPTIME</div>
        </div>
        <div class="metric">
            <div class="metric-label">Usuários Logados</div>
            <div class="metric-value">$USERS</div>
        </div>
        <div class="metric">
            <div class="metric-label">Processos em Execução</div>
            <div class="metric-value">$PROCESSES</div>
        </div>
        
        <div class="footer">
            Relatório gerado automaticamente em $DATE
        </div>
    </div>
</body>
</html>
EOF

# Criar link para o relatório mais recente
ln -sf "$REPORT_FILE" "$LATEST_LINK"

# Definir permissões
chmod 644 "$REPORT_FILE"

echo "Relatório HTML gerado com sucesso: $REPORT_FILE"
echo "Link para o relatório mais recente: $LATEST_LINK"