Notificar cambios en la IP pública por email y/o Telegram en Mikrotik
2024-05-20
En este articulo escribí la manera en la que podemos enviar notificaciones desde un router Mikrotik con RouterOS a Telegram y en este otro para enviarlas por correo electrónico.
Aprovechando estas características vamos a realizar un script para que cada vez que cambie la dirección IP publica del router nos lo notifique enviando un mensaje tanto por correo electrónico como por Telegram
⚠️ La presente publicación se ha realizado sobre un router Mikrotik AX³3 y la versión 7.11.2 de RouterOS
Lo primero de todo agradecer al usuario diamuxin de foros Adslzone por su aporte donde publicó este script.
Creamos un nuevo script desde System -> Script y pulsamos en el icono con el símbolo + azul
Elige un nombre para el script en el campo Name y en el campo Source introducimos el siguiente código,
🗨️ Recuerda que para que este script funcione tienes que tener bien configurado el correo electrónico en RouterOS y haber creado previamente el modulo MyTGBotSendMessage para Telegram
:global CurrentIP;
:local NewIP ([/tool fetch url=http://api.ipify.org/ as-value output=user] -> "data")
:delay 2s
:if ($NewIP != $CurrentIP) do={
# Variables
:local Time [/system clock get time];
:local Date [/system clock get date];
:local DeviceName [/system identity get name];
# START Send Email
/tool e-mail send to="[email protected]" from="Router R1" subject="\F0\9F\9F\A2 $DeviceName: La WAN IP ha cambiado%0ANueva IP: $NewIP%0AAnterior IP: $CurrentIP"
# END Send Email
# START Send Telegram Module
:local MessageText "\F0\9F\9F\A2 $DeviceName: La WAN IP ha cambiado%0ANueva IP: $NewIP%0AAnterior IP: $CurrentIP";
:local SendTelegramMessage [:parse [/system script get MyTGBotSendMessage source]];
$SendTelegramMessage MessageText=$MessageText;
#END Send Telegram Module
:log info "Detectada nueva IP WAN: $NewIP - Anterior IP: $CurrentIP";
:delay 5s;
# Guarda la IP actual en una variable global
:set CurrentIP $NewIP;
} else={
:log info "INFO: WAN IP anterior $CurrentIP es igual a la IP actual, no ha cambiado";
# START Send Email
/tool e-mail send to="[email protected]" from="Router R1" subject="\F0\9F\9F\A2 $DeviceName: La WAN IP no ha cambiado:%0A$NewIP"
# END Send Email
# Recibimos un aviso vía Telegram en caso que no haya cambiado la IP.
# START Send Telegram Module
:local MessageText "\F0\9F\9F\A2 $DeviceName: La WAN IP no ha cambiado:%0A$NewIP";
:local SendTelegramMessage [:parse [/system script get MyTGBotSendMessage source]];
$SendTelegramMessage MessageText=$MessageText;
#END Send Telegram Module
Ahora solo queda programar cuando queremos que se ejecute el script, en el ejemplo se ejecuta todos los días a las 06:45 horas
Cuando cambie la dirección IP del router recibiremos un mensaje de Telegram y/o por correo electrónico
Y si no ha cambiado también 😜
Espero que te haya gustado, pasa un gran día 🐧