🧩 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 previo al sábado y domingo de cambio horario.
- Si el domingo de cambio horario el equipo no tiene encendido, salta al siguiente día disponible.
- 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 previo al sábado y domingo de cambio horario.
- Si el domingo de cambio horario el equipo no tiene encendido, salta al siguiente día disponible.
- 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
No Comments