Ir al contenido
  1. Posts/

Notificar cambios en la IP pública por email y/o Telegram en Mikrotik

·425 palabras·2 mins
Mikrotik Router Telegram Mikrotik
Tabla de contenido

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 🐧

Referencia
#