[Auto-Sync] Atualização das configurações em srvproxy001.itguys.com.br - 2025-09-21 01:34:38
This commit is contained in:
parent
33fa2dc943
commit
fb6f8b5bd2
|
|
@ -1,100 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# ==============================================================================
|
|
||||||
# SCRIPT DE GERAÇÃO DE CERTIFICADOS SSL EM LOTE
|
|
||||||
#
|
|
||||||
# Descrição: Este script automatiza a obtenção de certificados Let's Encrypt
|
|
||||||
# para todos os sites configurados no Nginx.
|
|
||||||
# ==============================================================================
|
|
||||||
|
|
||||||
# --- Variáveis de Configuração ---
|
|
||||||
SITES_DIR="/etc/nginx/sites-available"
|
|
||||||
# Use um email válido para as notificações do Let's Encrypt
|
|
||||||
ADMIN_EMAIL="operacoes@itguys.com.br"
|
|
||||||
|
|
||||||
# --- Funções de Ajuda ---
|
|
||||||
info() { echo -e "\e[32m[INFO]\e[0m $1"; }
|
|
||||||
error() { echo -e "\e[31m[ERRO]\e[0m $1"; }
|
|
||||||
warn() { echo -e "\e[33m[AVISO]\e[0m $1"; }
|
|
||||||
|
|
||||||
# --- Início da Execução ---
|
|
||||||
info "Iniciando o processo de geração de certificados para os sites em ${SITES_DIR}..."
|
|
||||||
|
|
||||||
if [ "$EUID" -ne 0 ]; then
|
|
||||||
error "Este script precisa de ser executado como root."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Arrays para guardar os resultados
|
|
||||||
SUCCESS_SITES=()
|
|
||||||
FAILED_SITES=()
|
|
||||||
|
|
||||||
# Percorre cada ficheiro de configuração no diretório de sites disponíveis.
|
|
||||||
for file in "$SITES_DIR"/*.conf; do
|
|
||||||
# Verifica se é um ficheiro regular.
|
|
||||||
if [[ ! -f "$file" ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
info "----------------------------------------------------------------------"
|
|
||||||
info "A processar o ficheiro: $(basename "$file")"
|
|
||||||
info "----------------------------------------------------------------------"
|
|
||||||
|
|
||||||
# Extrai todos os server_names do ficheiro, ignorando os comentados.
|
|
||||||
# Esta regex lida com múltiplas linhas de server_name e múltiplos domínios por linha.
|
|
||||||
DOMAINS=$(grep -v '^\s*#' "$file" | grep "server_name" | sed 's/server_name//' | sed 's/;//' | xargs)
|
|
||||||
|
|
||||||
# Se não encontrar nenhum server_name, salta para o próximo ficheiro.
|
|
||||||
if [ -z "$DOMAINS" ]; then
|
|
||||||
warn "Nenhum 'server_name' encontrado em $file. A ignorar."
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Constrói a lista de argumentos '-d' para o Certbot.
|
|
||||||
CERTBOT_DOMAIN_ARGS=""
|
|
||||||
for domain in $DOMAINS; do
|
|
||||||
CERTBOT_DOMAIN_ARGS+=" -d $domain"
|
|
||||||
done
|
|
||||||
|
|
||||||
info "Domínios encontrados: $DOMAINS"
|
|
||||||
info "A executar o Certbot..."
|
|
||||||
|
|
||||||
# Executa o Certbot.
|
|
||||||
# O comando 'if' verifica o código de saída do Certbot para saber se foi bem-sucedido.
|
|
||||||
if sudo certbot --nginx --non-interactive --agree-tos --no-eff-email --redirect ${CERTBOT_DOMAIN_ARGS} -m "$ADMIN_EMAIL"; then
|
|
||||||
info "Certificado para os domínios em $(basename "$file") gerado com sucesso!"
|
|
||||||
SUCCESS_SITES+=("$(basename "$file")")
|
|
||||||
else
|
|
||||||
error "Falha ao gerar o certificado para os domínios em $(basename "$file")."
|
|
||||||
FAILED_SITES+=("$(basename "$file")")
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# --- Relatório Final ---
|
|
||||||
echo ""
|
|
||||||
echo "======================================================================"
|
|
||||||
echo " RELATÓRIO FINAL DE GERAÇÃO DE CERTIFICADOS"
|
|
||||||
echo "======================================================================"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
if [ ${#SUCCESS_SITES[@]} -ne 0 ]; then
|
|
||||||
info "Certificados gerados com SUCESSO para:"
|
|
||||||
for site in "${SUCCESS_SITES[@]}"; do
|
|
||||||
echo " - $site"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
if [ ${#FAILED_SITES[@]} -ne 0 ]; then
|
|
||||||
error "FALHA ao gerar certificados para:"
|
|
||||||
for site in "${FAILED_SITES[@]}"; do
|
|
||||||
echo " - $site"
|
|
||||||
done
|
|
||||||
warn "Verifique se os registos de DNS para os domínios acima estão a apontar corretamente para este servidor e tente novamente."
|
|
||||||
else
|
|
||||||
info "Todos os certificados foram gerados sem erros!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
info "Processo concluído."
|
|
||||||
Loading…
Reference in New Issue