Уведомление при изменении внешнего IP адреса роутера MikroTik. Отправка сообщения на электронную почту или в Telegram.
Скрипт создает глобальную переменную CurrentIP, для хранения текущего внешнего IP адреса роутера MikroTik.
Скрипт использует API сервиса ipify.org, для получения внешнего IP адреса.
Для отправки сообщения на электронную почту используется функция: MikroTik Скрипты: Отправить письмо и файл на почту (функция).
Для отправки Telegram сообщения используется функция: MikroTik Скрипты: Отправка сообщения в Telegram (функция).
Статья на других языках:
?? — 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;
? Mikrotik скрипт уведомление об изменении внешнего IP адреса роутера обсуждался в этой статье. Я надеюсь теперь изменение внешнего IP адреса устройства MikroTik не будет неожиданным. Однако, если вы столкнетесь с каким-то проблемами при настройке, не стесняйтесь написать в комментариях. Я постараюсь помочь.
Решил взять из самого МТ адрес, но почему-то где-то «стратил»
[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]
Идея для статьи. Напишите о том как общаться с Mikrotik через telegram, т.е. условно выбираешь в боте /getip в ответ получаешь текущий IP и т.д.
[System] -> [Schedule] -> [+] -> [Name: CheckPowerOn script] - > [Interval: 00:05:00] -> [Policy: read, write, policy, test]
не большая ошибочка в имени
Большое спасибо, исправил опечатку.