netgescon-master/netgescon-scripts/setup-automation.sh
Pikappa2 480e7eafbd 🎯 NETGESCON - Setup iniziale repository completo
📋 Commit iniziale con:
-  Documentazione unificata in docs/
-  Codice Laravel in netgescon-laravel/
-  Script automazione in scripts/
-  Configurazione sync rsync
-  Struttura organizzata e pulita

🔄 Versione: 2025.07.19-1644
🎯 Sistema pronto per Git distribuito
2025-07-19 16:44:47 +02:00

197 lines
5.5 KiB
Bash

#!/bin/bash
# NetGescon Sync Automation Setup
# Script per configurare la sincronizzazione automatica
# Versione: 1.0
# Data: 2025-01-17
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CRON_FILE="/tmp/netgescon-sync-cron"
# Colori
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}NetGescon Sync Automation Setup${NC}"
echo "======================================="
echo
# Verifica se i script esistono
if [[ ! -f "$SCRIPT_DIR/auto-sync.sh" ]]; then
echo -e "${RED}Errore: Script auto-sync.sh non trovato!${NC}"
exit 1
fi
if [[ ! -f "$SCRIPT_DIR/sync-monitor.sh" ]]; then
echo -e "${RED}Errore: Script sync-monitor.sh non trovato!${NC}"
exit 1
fi
echo -e "${GREEN}Script trovati:${NC}"
echo "✅ auto-sync.sh"
echo "✅ sync-monitor.sh"
echo
# Rendi eseguibili gli script
chmod +x "$SCRIPT_DIR/auto-sync.sh"
chmod +x "$SCRIPT_DIR/sync-monitor.sh"
echo -e "${GREEN}Script resi eseguibili${NC}"
echo
# Configurazione cron jobs
echo -e "${BLUE}Configurazione automatizzazione:${NC}"
echo
# Backup del crontab esistente
crontab -l > "$CRON_FILE" 2>/dev/null || echo "" > "$CRON_FILE"
# Aggiungi i nostri job (se non già presenti)
if ! grep -q "NetGescon Auto-Sync" "$CRON_FILE"; then
cat >> "$CRON_FILE" << EOF
# NetGescon Auto-Sync Jobs
# Sincronizzazione ogni 15 minuti (solo nei giorni lavorativi, ore 8-18)
*/15 8-18 * * 1-5 $SCRIPT_DIR/auto-sync.sh -m sync -v >> $HOME/netgescon/log/cron-sync.log 2>&1
# Backup completo ogni notte alle 2:00
0 2 * * * $SCRIPT_DIR/auto-sync.sh -m backup -t both -v >> $HOME/netgescon/log/cron-backup.log 2>&1
# Deploy completo ogni lunedì alle 6:00
0 6 * * 1 $SCRIPT_DIR/auto-sync.sh -m deploy -r -v >> $HOME/netgescon/log/cron-deploy.log 2>&1
# Monitoraggio dello stato ogni 5 minuti
*/5 * * * * $SCRIPT_DIR/sync-monitor.sh status >> $HOME/netgescon/log/cron-monitor.log 2>&1
# Pulizia log vecchi ogni domenica alle 3:00
0 3 * * 0 find $HOME/netgescon/log -name "*.log" -mtime +30 -delete 2>/dev/null || true
EOF
fi
# Installa il nuovo crontab
if crontab "$CRON_FILE"; then
echo -e "${GREEN}✅ Crontab aggiornato con successo${NC}"
else
echo -e "${RED}❌ Errore nell'aggiornamento del crontab${NC}"
exit 1
fi
# Pulisci file temporaneo
rm -f "$CRON_FILE"
echo
echo -e "${BLUE}Jobs configurati:${NC}"
echo "• Sincronizzazione: ogni 15 minuti (lun-ven, 8-18)"
echo "• Backup completo: ogni notte alle 2:00"
echo "• Deploy completo: ogni lunedì alle 6:00"
echo "• Monitoraggio: ogni 5 minuti"
echo "• Pulizia log: ogni domenica alle 3:00"
echo
# Crea le directory necessarie
mkdir -p "$HOME/netgescon/log"
mkdir -p "$HOME/netgescon/backup/sync"
mkdir -p "$HOME/netgescon/reports"
echo -e "${GREEN}✅ Directory create${NC}"
echo
# Crea script di utilità
cat > "$SCRIPT_DIR/sync-utils.sh" << 'EOF'
#!/bin/bash
# NetGescon Sync Utilities
# Script di utilità per la gestione della sincronizzazione
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
case "${1:-help}" in
"start")
echo "Avvio sincronizzazione manuale..."
"$SCRIPT_DIR/auto-sync.sh" -m sync -v
;;
"stop")
echo "Arresto processi di sincronizzazione..."
pkill -f "auto-sync.sh" || true
echo "Processi arrestati"
;;
"status")
"$SCRIPT_DIR/sync-monitor.sh" dashboard
;;
"logs")
tail -f "$HOME/netgescon/log/auto-sync.log"
;;
"backup")
echo "Avvio backup manuale..."
"$SCRIPT_DIR/auto-sync.sh" -m backup -t both -v
;;
"deploy")
echo "Avvio deploy manuale..."
"$SCRIPT_DIR/auto-sync.sh" -m deploy -r -v
;;
"clean")
echo "Pulizia log vecchi..."
find "$HOME/netgescon/log" -name "*.log" -mtime +7 -delete
echo "Pulizia completata"
;;
"report")
"$SCRIPT_DIR/sync-monitor.sh" html
;;
"cron")
echo "Crontab attuale:"
crontab -l | grep -A 10 -B 2 "NetGescon" || echo "Nessun job NetGescon trovato"
;;
"help"|*)
echo "NetGescon Sync Utilities"
echo
echo "Uso: $0 [COMANDO]"
echo
echo "Comandi:"
echo " start Avvia sincronizzazione manuale"
echo " stop Arresta processi di sincronizzazione"
echo " status Mostra dashboard stato"
echo " logs Visualizza log in tempo reale"
echo " backup Esegui backup manuale"
echo " deploy Esegui deploy manuale"
echo " clean Pulisci log vecchi"
echo " report Genera report HTML"
echo " cron Mostra crontab NetGescon"
echo " help Mostra questo aiuto"
;;
esac
EOF
chmod +x "$SCRIPT_DIR/sync-utils.sh"
echo -e "${GREEN}✅ Script di utilità creato: sync-utils.sh${NC}"
echo
# Crea link simbolici per accesso facile
if [[ -d "$HOME/bin" ]] || mkdir -p "$HOME/bin"; then
ln -sf "$SCRIPT_DIR/sync-utils.sh" "$HOME/bin/netgescon-sync" 2>/dev/null || true
echo -e "${GREEN}✅ Link simbolico creato: ~/bin/netgescon-sync${NC}"
fi
echo
echo -e "${BLUE}Setup completato!${NC}"
echo
echo -e "${YELLOW}Comandi utili:${NC}"
echo "• netgescon-sync status - Mostra stato"
echo "• netgescon-sync start - Sincronizzazione manuale"
echo "• netgescon-sync logs - Visualizza log"
echo "• netgescon-sync report - Genera report HTML"
echo
echo -e "${YELLOW}File di configurazione:${NC}"
echo "$SCRIPT_DIR/config/sync-config.conf"
echo
echo -e "${YELLOW}Log directory:${NC}"
echo "$HOME/netgescon/log/"
echo
echo -e "${GREEN}La sincronizzazione automatica è ora attiva!${NC}"