Por: Camilo Hoyos – OnlyClic, Soluciones a un Clic.
Fecha: Octubre de 2025
Introducción
En uno de mis proyectos recientes me encontré con un problema en un sistema Hotspot MikroTik con generación automática de credenciales y auto-login: las variables de sesión funcionaban solo para el primer usuario nuevo conectado y no para los demás usuarios nuevos. En este post te cuento cómo detecté la causa, qué cambios hice y cómo logré que el sistema funcionara de manera estable y confiable para todos los usuarios.
El problema: Valor de variables no encontrada.
El sistema Hotspot permitía el acceso a Internet, pero presentaba los siguientes problemas cuando ejecuta On-login:
- Ejecución de scripts solo en la primera sesión o primer usuario.
- Variables de sesión como username, ip_address, sesión_time_left, se recibían correctamente en cada sesión.
- Valores como mac, hostname o date no se recibían correctamente después del primer usuario.
Estos errores generaban mal funcionamiento de los requerimientos del proyecto. Afectaban el control de sesiones de los usuarios en un ambiente de Hotspot con auto login.
El Diagnóstico:
Después de revisar los logs encontramos que:
- El valor de la variable $user y $address cambiaba en cada nuevo inicio de sesión.
- El valor de la variable $mac no se mostraba después de la primera sesión.
- Los scripts que usaban $mac como condicional para su ejecución, solo se ejecutaban en la primera sesión.
Después de investigar y consultar en la documentación de Hotspot en Mikrotik y utilizar la ayuda de herramientas de AI, encontramos lo siguiente:
Hay unas variables que vienen con valores en cada inicio de sesión del Hotspot y hay otras variables que no se obtienen automáticamente y se deben obtener por medio de comandos.
Por ejemplo, podemos llamar la variable $user, que ya está definida y genera su valor automáticamente cada vez que un nuevo usuario inicia sesión en el Hotspot. La variable $user tiene guardada el usuario de esa nueva sesión y se puede usar directamente en cualquier parte del script en la sesión de ese usuario. Otra variable que se define al momento de registrarse un nuevo usuario es $address, la cual tiene guardada la ip de ese usuario, y similar a $user, puede ser usada en cualquier momento y mantiene su valor durante toda la sesión. Lo importante es saber que estas variables cambian en el inicio de cada sesión o al momento de un nuevo registro en el Hotspot.
Por el contrario, hay variables que no tienen un nombre de variable por defecto para ser guardadas y deben ser asignadas en cada sesión, como son la mac, host, date (nombres en inglés como ejemplo). El valor de estas variables debe ser guardado nuevamente en cada sesión.
Variables disponibles en On-login:
Algunas variables que pueden ser llamadas directamente y ya tienen un valor:
- $user → Valor de nombre de usuario que entró.
- $address → Valor de IP que el Hotspot le asignó al usuario.
- $uptime, $session-time-left son otras variables automáticas de sesión.
Variables que no existen directamente y deben ser creadas por cada sesión:
- $mac o $mk_mack o $mi_mac → No es variable; su valor se obtiene con comandos.
- $host o $my_host → No es variable; su valor se obtiene con comandos.
- $date o $fecha o $my_date → No es variable; su valor se obtiene con comandos.
Solución implementada:

Para resolver el problema se realizaron los siguientes cambios:
- Definición de variables con valores vacíos.
Lo que hicimos fue declarar como vacías las variables que no se generan automáticamente al inicio de cada sesión como se muestra a continuación:- :local mkmac «»;
- :local mkhost «»;
- Esto se hace al inicio de On-login para que valores anteriores sean reseteados.
- Asignar valores dentro de cada bloque.
Asignamos nuevos valores de las variables en cada bloque del script como se muestra a continuación en el ejemplo:- :if ([:len $sessionId] > 0) do={ :set mkmac [/ip hotspot active get $sessionId mac-address];}
Resultados obtenidos:
Después de la reconfiguración:
- Todos los usuarios fueron redirigidos correctamente después del login.
- Las variables de sesión y scripts se mantuvieron estables y se ejecutaron correctamente en todas las sesiones.
- Variables actualizadas correctamente por usuario.
- Los requerimientos del proyecto fueron alcanzados correctamente.
Conclusión:
Este caso confirma que muchos errores en Hotspot MikroTik cuando se trabaja junto con scripts, provienen de variables no redefinidas entre sesiones o de scripts heredados. Ajustar las variables y limpiar el código del On-login garantiza estabilidad y control total.
En Onlyclic aplicamos un enfoque integral que combina diagnóstico, pruebas reales y ajustes específicos, garantizando un servicio estable y profesional para cada cliente.
¿Tienes un problema similar?
- Redirecciones erróneas al finalizar el login (particularmente en Android) ? Quieres saber como lo solucionamos….. Léenos próximamente.
En Onlyclic, Soluciones a un Clic, te ayudamos a optimizar tu red, proteger tu infraestructura y personalizar tus portales Hotspot.
👉 Escríbenos a través de nuestro formulario de contacto o visítanos en onlyclic.com.co


