MikroTik Скрипты: Уведомление при изменении внешнего IP адреса роутера

Уведомление при изменении внешнего IP адреса роутера MikroTik. Отправка сообщения на электронную почту или в Telegram.

Скрипт создает глобальную переменную CurrentIP, для хранения текущего внешнего IP адреса роутера MikroTik.

Скрипт использует API сервиса ipify.org, для получения внешнего IP адреса.

Для отправки сообщения на электронную почту используется функция: MikroTik Скрипты: Отправить письмо и файл на почту (функция).

Для отправки Telegram сообщения используется функция: MikroTik Скрипты: Отправка сообщения в Telegram (функция).

Пример электронного письма с уведомлением о изменении внешнего IP адреса
Пример электронного письма с уведомлением о изменении внешнего IP адреса

Статья на других языках:
?? — MikroTik Scripts: Notification when the external IP address of the router changes
?? — MikroTik Scripts: notificación cuando cambia la dirección IP externa del enrutador
?? — Scripts MikroTik: Notification lorsque l’adresse IP externe du routeur change
?? — MikroTik-Skripte: Benachrichtigung, wenn sich die externe IP-Adresse des Routers ändert
?? — MikroTik-scripts: Melding wanneer het externe IP-adres van de router verandert

Создать скрипт

[System] -> [Scripts] -> [+] -> [Name: CheckChangeExternalAdress] -> [Policy: read, write, policy, test]

Код скрипта

:global CurrentIP;
:local NewIP ([/tool fetch url=http://api.ipify.org/ as-value output=user] -> "data")

:if ($NewIP != $CurrentIP) do={
    # Variables
    :local Time [/system clock get time];
    :local Date [/system clock get date];
    :local DeviceName [/system identity get name];
    :local Text "New IP: $NewIP, Previous IP: $CurrentIP";
    :set CurrentIP $NewIP;

    # START Send Telegram Module
    :local MessageText "\F0\9F\9F\A2 <b>$DeviceName: External IP address has changed.</b> $Text";
    :local SendTelegramMessage [:parse [/system script  get MyTGBotSendMessage source]]; 
    $SendTelegramMessage MessageText=$MessageText;
    #END Send Telegram Module

    # START Send Email Module
    :local SendTo "test@mhelp.pro";
    :local Subject "\F0\9F\9F\A2 INFO: $DeviceName [$Date $Time] External IP address has changed.";
    :local MessageText $Text;
    :local FileName "";
    :local SendEmail [:parse [/system script get SendEmailFunction source]];
    $SendEmail SendTo=$SendTo TextMail=$MessageText Subject=$Subject FileName=$FileName;
    # END Send Email Module
};

Добавить скрипт в Планировщик MikroTik

Для работы скрипта необходимо установить следующие разрешения: read, write, policy, test.

[System] -> [Schedule] -> [+] -> [Name: CheckChangeExternalAdress] - > [Interval: 00:05:00] -> [Policy: read, write, policy, test]

Код скрипта:

/system script run CheckChangeExternalAdress;
МикроТик Скрипт Уведомление при изменении внешнего IP адреса роутера

? Mikrotik скрипт уведомление об изменении внешнего IP адреса роутера обсуждался в этой статье. Я надеюсь теперь изменение внешнего IP адреса устройства MikroTik не будет неожиданным. Однако, если вы столкнетесь с каким-то проблемами при настройке, не стесняйтесь написать в комментариях. Я постараюсь помочь.

4 комментария к “MikroTik Скрипты: Уведомление при изменении внешнего IP адреса роутера”

  1. Решил взять из самого МТ адрес, но почему-то где-то «стратил»

    [code]
    :global currentIP;

    :local newIP [/ip/cloud get public-address];

    #Variables
    :local token «6249466755:AAFG1PPSJYfug2mhMT_ArgF1ZKHg1hbKhEc»;
    :local chatID «555402128»;
    :local text «\E2\84\B9 $[/system identity get name] $[/system resource get board-name]%0A%0APublic Address: $[/ip/cloud get public-address]%0AName: $[/ip/cloud get dns-name]%0AStatus: $[/ip/cloud get status]»;

    :if ($newIP != $currentIP) do={
    :set currentIP $newIP;

    #START Send Telegram Module
    /tool fetch url=»https://api.telegram.org/bot$token/sendMessage?chat_id=$chatID&text=$text» output=user;
    #END Send Telegram Module
    }
    [/code]

    Ответить
  2. Идея для статьи. Напишите о том как общаться с Mikrotik через telegram, т.е. условно выбираешь в боте /getip в ответ получаешь текущий IP и т.д.

    Ответить
  3. [System] -> [Schedule] -> [+] -> [Name: CheckPowerOn script] - > [Interval: 00:05:00] -> [Policy: read, write, policy, test]

    не большая ошибочка в имени

    Ответить

Оставьте комментарий