🧩 Cambio de Hora
El script timeChange.sh es un gestor de cambios horarios y respaldos para varios subdominios de la plataforma. Ejecuta de forma automatizada las URL de los scripts PHP correspondientes a cada tienda para cambiar la hora, hacer respaldos o restaurarlos.
Debe ir en un Súper Ordenador.
Funciona para los domingos de cambio horario, si no abre la tienda o cliente el domingo, lo ejecuta el siguiente día disponible.
Espera 72 Horas si se ejecuta un viernes para que la restauración de horarios no se haga antes del propio cambio.
----------------------------------------------------------------------------------------------------------------------------------------------
Canales Corporativos Compatibles:
- Comunicación Visual Canarias: Panel
- Spar Gran Canaria
- Frigo Martel
- Pizza Royers
- Cash Converters
----------------------------------------------------------------------------------------------------------------------------------------------
Ejecución en terminal del Súper Ordenador:
MODO VERANO
nohup bash /home/cvc/timeChange/timeChange.sh verano >> /home/cvc/timeChange/timeChange.out 2>&1 &
- Ejecutar el viernes que se vaya a hacer el cambio de hora los domingos de cambio horario. 72 Horas después restablecerá los horarios.
- [Guardar Respaldo -> 10 Segundos -> Sumar una hora apertura del domingo -> 72 Horas -> Cargar Respaldo]
MODO INVIERNO
nohup bash /home/cvc/timeChange/timeChange.sh invierno >> /home/cvc/timeChange/timeChange.out 2>&1 &
- Ejecutar el viernes que se vaya a hacer el cambio de hora los domingos de cambio horario. 72 Horas después restablecerá los horarios.
- [Guardar Respaldo -> 10 Segundos -> Restar una hora apertura del domingo -> 72 Horas -> Cargar Respaldo]
REGISTRO DE EJECUCIÓN
tail -f /home/cvc/timeChange/timeChange.log
- Revisa la fecha y hora de ejecución de cualquier modo del script.
GUARDAR RESPALDO DE HORARIOS
bash /home/cvc/timeChange/timeChange.sh guardar
- Guarda un respaldo de los horarios de todos los clientes y subdominios.
CARGAR RESPALDO DE HORARIOS
bash /home/cvc/timeChange/timeChange.sh cargar
- Carga el respaldo de los horarios de todos los clientes y subdominios.
SUMAR UNA HORA A TODOS LOS CLIENTES
bash /home/cvc/timeChange/timeChange.sh +1
- Suma una hora a las apertura en los horarios de todos los clientes y subdominios en los domingos y posteriores de cambio horario.
RESTAR UNA HORA A TODOS LOS CLIENTES
bash /home/cvc/timeChange/timeChange.sh -1
- Resta una hora a las apertura en los horarios de todos los clientes y subdominios en los domingos y posteriores de cambio horario.
MODO TEST
nohup bash /home/cvc/timeChange/timeChange.sh test >> /home/cvc/timeChange/timeChange.out 2>&1 &
- Modo test no hace ningún cambio en la base de datos ni en los canales corporativos. 72 Horas después debe confirmar nueva ejecución. Su función principal es ver si el script se mantiene activo hasta pasadas las horas previstas para comprobar si los modos funcionarían adecuadamente.
----------------------------------------------------------------------------------------------------------------------------------------------
Requisitos obligatorios:
- Carpeta llamada "timeChange" dentro de "home - > cvc"
- Dentro de la carpeta, el script que se llamará "timeChange" con formato .sh
#!/bin/bash
# ============================================================
# Script: timeChange.sh
# Descripción: Ejecuta backups, cambio horario (verano/invierno)
# restore, modos de prueba y cambios directos (+1/-1)
# ============================================================LOG_FILE="/home/cvc/timeChange/timeChange.log"
WAIT_BETWEEN_PHASES=10 # segundos de espera entre fases
REVERSE_HOURS=72 # horas hasta restore / job diferido
DATE_NOW=$(date '+%Y-%m-%d %H:%M:%S')# Limpiar log en cada ejecución directa (no cuando viene de at)
if [[ "$1" != "cargar" && "$1" != "test_scheduled" ]]; then
echo "==============================" > "$LOG_FILE"
echo "🕓 Inicio de ejecución — $DATE_NOW" >> "$LOG_FILE"
echo "==============================" >> "$LOG_FILE"
fi# URLs de tiendas
URLS_BACKUP=(
"https://panel.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=backup"
"https://spar.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=backup"
"https://frigomartel.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=backup"
"https://pizzaroyers.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=backup"
"https://cashconverters.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=backup"
)URLS_RESTORE=(
"https://panel.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=restore"
"https://spar.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=restore"
"https://frigomartel.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=restore"
"https://pizzaroyers.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=restore"
"https://cashconverters.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=restore"
)URLS_SUMMER=(
"https://panel.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=summer"
"https://spar.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=summer"
"https://frigomartel.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=summer"
"https://pizzaroyers.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=summer"
"https://cashconverters.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=summer"
)URLS_WINTER=(
"https://panel.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=winter"
"https://spar.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=winter"
"https://frigomartel.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=winter"
"https://pizzaroyers.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=winter"
"https://cashconverters.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=winter"
)URLS_TEST=(
"https://panel.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=test"
"https://spar.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=test"
"https://frigomartel.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=test"
"https://pizzaroyers.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=test"
"https://cashconverters.comunicacionvisualcanarias.com/_scripts/cambioHora.php?action=test"
)# Funciones
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}execute_urls() {
local urls=("$@")
for url in "${urls[@]}"; do
curl -s "$url" >/dev/null 2>&1 &
done
wait
}finish_log() {
log "✅ Finalización completa — $(date '+%Y-%m-%d %H:%M:%S')"
echo "------------------------------" >> "$LOG_FILE"
}# ============================================================
# EJECUCIÓN SEGÚN ARGUMENTO
# ============================================================if [ -z "$1" ]; then
log "❌ Uso: $0 [verano|invierno|guardar|cargar|+1|-1|test]"
exit 1
fiACTION=$1
# -------------------------------
# SOLO BACKUP
# -------------------------------
if [ "$ACTION" == "guardar" ]; then
log "📦 Ejecutando solo BACKUP..."
execute_urls "${URLS_BACKUP[@]}"
log "✅ BACKUP completado."
finish_log
exit 0
fi# -------------------------------
# SOLO RESTORE
# -------------------------------
if [ "$ACTION" == "cargar" ]; then
log "♻️ Ejecutando solo RESTORE..."
execute_urls "${URLS_RESTORE[@]}"
log "✅ RESTORE completado."
finish_log
exit 0
fi# -------------------------------
# CAMBIO DIRECTO +1 / -1
# -------------------------------
if [ "$ACTION" == "+1" ]; then
log "🌞 Ejecutando cambio horario +1..."
execute_urls "${URLS_SUMMER[@]}"
log "✅ Cambio horario +1 completado."
finish_log
exit 0
fiif [ "$ACTION" == "-1" ]; then
log "❄️ Ejecutando cambio horario -1..."
execute_urls "${URLS_WINTER[@]}"
log "✅ Cambio horario -1 completado."
finish_log
exit 0
fi# -------------------------------
# MODO TEST — programación con 72 horas
# -------------------------------
if [ "$ACTION" == "test" ]; then
log "🧪 Ejecutando modo TEST..."
execute_urls "${URLS_TEST[@]}"
log "✅ URLs de test ejecutadas ahora."log "⏳ Programando ejecución diferida con at dentro de $REVERSE_HOURS horas..."
TEST_COMMAND="bash /home/cvc/timeChange/timeChange.sh test_scheduled >> /home/cvc/timeChange/timeChange.log 2>&1"
echo "$TEST_COMMAND" | at now + $REVERSE_HOURS hours
log "📅 Comando programado con 'at' para reejecutar test."
finish_log
exit 0
fi# -------------------------------
# MODO TEST PROGRAMADO AUTOMÁTICO
# -------------------------------
if [ "$ACTION" == "test_scheduled" ]; then
log "🚀 Ejecución iniciada automáticamente por 'at'"
log "🔁 Ejecución programada del modo TEST..."
execute_urls "${URLS_TEST[@]}"
log "✅ URLs de test ejecutadas (programadas)."
finish_log
exit 0
fi# -------------------------------
# CAMBIO HORARIO COMPLETO (verano/invierno)
# -------------------------------
if [[ "$ACTION" == "verano" || "$ACTION" == "invierno" ]]; then
log "📦 Iniciando BACKUP (todas las tiendas)..."
execute_urls "${URLS_BACKUP[@]}"
log "✅ BACKUP completado."
sleep $WAIT_BETWEEN_PHASESif [ "$ACTION" == "verano" ]; then
log "🌞 Ejecutando CAMBIO HORARIO VERANO..."
execute_urls "${URLS_SUMMER[@]}"
else
log "❄️ Ejecutando CAMBIO HORARIO INVIERNO..."
execute_urls "${URLS_WINTER[@]}"
fi
log "✅ Cambio horario completado."log "⏳ Programando RESTORE dentro de $REVERSE_HOURS horas..."
RESTORE_COMMAND="bash /home/cvc/timeChange/timeChange.sh cargar >> /home/cvc/timeChange/timeChange.log 2>&1"
echo "$RESTORE_COMMAND" | at now + $REVERSE_HOURS hourslog "🏁 Proceso completo programado. Revisa log para seguimiento."
finish_log
exit 0
fi