Módulo de tareas programadas en Lucky
El sistema de tareas programadas de Lucky permite ejecutar scripts externos y controlar módulos internos mediante expresiones cron o intervalos fijos. Esta funcionalidad habilita la automatización de operaciones de red como port forwarding, DDNS y proxy inverso.
| Capacidad | Descripción | Casos de uso |
|---|---|---|
| Disparadores temporales | Cron expressions y intervalos regulares | Ejecución periódica de scripts, activación/desactivación programada |
| Ejecución de scripts | Bash, Python, binarios compilados | Flujos personalizados, integración con sistemas externos |
| Control de módulos | Port forwarding, DDNS, reverse proxy | Gestión dinámica de servicios de red |
| Evaluación condicional | Detección de cambios de IP, estado de red | Respuesta automática a eventos de red |
Ejemplo de script Bash para monitoreo de conectividad
El siguiente script verifica la disponibilidad de red y ajusta las reglas de port forwarding mediante la API REST de Lucky:
#!/bin/bash
# /opt/scripts/connectivity_guard.sh
LUCKY_API="http://127.0.0.1:16601/api"
RULE_IDENTIFIER="rule_123"
TARGET_HOST="1.1.1.1"
ping -c 1 -W 3 $TARGET_HOST &>/dev/null
CONNECTIVITY=$?
if [ $CONNECTIVITY -eq 0 ]; then
logger "Conectividad OK - activando forwarding"
curl -s -X POST "$LUCKY_API/portforward/enable" \
-H "Content-Type: application/json" \
-d "{\"rule_id\": \"$RULE_IDENTIFIER\"}"
else
logger "Sin conectividad - desactivando forwarding"
curl -s -X POST "$LUCKY_API/portforward/disable" \
-H "Content-Type: application/json" \
-d "{\"rule_id\": \"$RULE_IDENTIFIER\"}"
fi
Script Python para supervisión de DDNS
Para escenarios que requieren lógica más elaborada, Python ofrece mayor flexibilidad en el procesamiento de respuestas API y envío de notificaciones:
#!/usr/bin/env python3
# /opt/scripts/ddns_supervisor.py
import logging
import urllib.request
import json
from datetime import datetime
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s')
LUCKY_BASE_URL = "http://127.0.0.1:16601/api"
def fetch_ddns_tasks():
"""Obtiene el listado de tareas DDNS desde la API de Lucky."""
req = urllib.request.Request(f"{LUCKY_BASE_URL}/ddns/tasks")
with urllib.request.urlopen(req) as response:
payload = json.loads(response.read().decode())
return payload
def notify_failure(task_name, error_detail):
"""Envía alerta ante fallos en tareas DDNS."""
timestamp = datetime.now().isoformat()
alert_msg = f"[{timestamp}] DDNS ALERT: {task_name} - {error_detail}"
logging.error(alert_msg)
# Integración con webhook de notificaciones aquí
def evaluate_tasks():
"""Evalúa el estado de cada tarea DDNS."""
try:
tasks = fetch_ddns_tasks()
for entry in tasks:
current_state = entry.get("state", "unknown")
if current_state == "error":
notify_failure(entry["label"], entry.get("detail", "sin detalles"))
else:
logging.info(f"Tarea {entry['label']} - estado: {current_state}")
except Exception as err:
logging.critical(f"Error consultando API: {err}")
if __name__ == "__main__":
evaluate_tasks()
Configuración mediante interfaz web
Para registrar una tarea programada en Lucky:
- Acceder al panel administrativo en
http://IP_DISPOSITIVO:16601 - Navegar a la sección "Tareas programadas" en el menú lateral
- Pulsar "Nueva tarea" para crear una entrada
- Definir los parámetros:
- Patrón de ejecución: expresión cron o intervalo en minutos
- Acción: seleccionar "Ejecutar script"
- Ruta del script: ruta absoluta al archivo ejecutable
- Límite de tiempo: valor en segundos antes de cancelar la ejecución
Escenarios de aplicación
Gestión inteligente de ancho de banda
Scripts que analizan el tráfico de red y desactivan reglas de forwarding no críticas durante horas pico para priorizar servicios esenciales.
Políticas de seguridad dinámicas
Actualización periódica de listas de control de acceso mediante scripts que sincronizan reglas desde fuentes externas de reputación de IP.
Respaldo DNS multi-provider
Scripts que mantienen registros DNS actualizados en múltiples proveedores simultáneamente para garantizar redundancia.
Vigilancia de dispositivos internos
Detección programada de disponibilidad de equipos en la red local con notificación automática ante caídas.
Intergación avanzada con API REST
Lucky expone endpoints REST que permiten controlar módulos directamente desde scripts:
# Consultar tareas DDNS activas
curl http://127.0.0.1:16601/api/ddns/tasks
# Activar una regla de port forwarding específica
curl -X POST http://127.0.0.1:16601/api/portforward/enable \
-H "Content-Type: application/json" \
-d '{"rule_id": "mi_regla"}'
# Actualizar configuración de proxy inverso
curl -X PUT http://127.0.0.1:16601/api/reverseproxy \
-H "Content-Type: application/json" \
-d '{"config_data": "nueva_config"}'
Recomendaciones operativas
- Verificar que el proceso de Lucky tenga permisos de ejecución sobre los scripts definidos
- Incluir registro detallado dentro de cada script para facilitar diagnóstico de fallos
- Configurar límites de tiempo coherentes con la complejidad de cada operación
- Implementar manejo de excepciones para evitar que errores aislados afecten el sistema completo
- Evitar frecuencias de ejecución excesivas en scripts con alto consumo de recursos