Страница 1 из 4

Скрипт отправки внешнего IP на почту (если он изменился).

Добавлено: 17 мар 2015, 22:50
GDragon
Зачем оно нужно - объяснять не стану :)
Задействует те же переменные что и viewtopic.php?f=14&t=6195

Ранее выкладывал в комментариях, сейчас решил отдельную тему запилить.
 Тело скрипта
# Check ip and send to e-mail if changed
#---------- Config below this line ----------

# set WAN interface name
:local WAN "WAN Interface name";
# set e-mail smtp server name
:local smtpserv [:resolve "your SMTP server"];
# set e-mail username
:local Eaccount "sending e-mail user";
# set e-mail password
:local Epassword "sending e-mail password";
# set e-mail main recipient
:local Etomail "e-mail recipient";

#---------- Config above this line ----------

:global StoredIP
:local sysname [/system identity get name];
:local sysver [/system package get system version];
:local CurrIP
:log info "Get WAN interface IP address (New IP to e-mail script)"

# Get WAN interface IP address
:set CurrIP [/ip address get [/ip address find interface=$WAN] address]
:set CurrIP [:pick [:tostr $CurrIP] 0 [:find [:tostr $CurrIP] "/"]]

:if ([:len $CurrIP] = 0) do={
:log error ("Could not get IP for interface " . $WAN)
:error ("Could not get IP for interface " . $WAN)
} else={:log info "IP from $WAN get. (New IP to e-mail script)"}
:log info "Checking & sending IP if needed."

# Check IP address & send if needed

:if ($StoredIP != $CurrIP) do={
/tool e-mail send from=$Eaccount to=$Etomail \
server=$smtpserv port=465 user=$Eaccount password=$Epassword \
subject=("Mikrotik $sysname IP changed (" . [/system clock get date] . \
")") body=("New $sysname IP: $CurrIP.\nRouterOS \
version: $sysver\nTime and Date stamp: " . [/system clock get time] . " \
" . [/system clock get date]);
:log info "Send new IP to e-mail complete"
:set StoredIP "$CurrIP"
:log info "Stored IP Updated"
} else={:log info "IP not changed"}

Re: Скрипт отправки внешнего IP на почту (если он изменился)

Добавлено: 15 июл 2015, 17:46
23q
а если ай-пи не реальный, то узнать можно таким методом:
# get the current IP address from the internet (in case of double-nat)
/tool fetch mode=http address="checkip.dyndns.org" src-path="/" dst-path="/dyndns.checkip.html"
:local result [/file get dyndns.checkip.html contents]
# parse the current IP result
:local resultLen [:len $result]
:local startLoc [:find $result ": " -1]
:set startLoc ($startLoc + 2)
:local endLoc [:find $result "</body>" -1]
:global currentIP [:pick $result $startLoc $endLoc]

ну и потом обрабатываем результат как угодно :-)

Re: Скрипт отправки внешнего IP на почту (если он изменился).

Добавлено: 08 ноя 2016, 19:21
Heavymetall2000
Здравствуйте! Подскажите этот скрипт надо ежесекундно выполнять в Sheduler? У меня не работает на железке RB2011UiAS-2HnD OS 6.36 (stable)

Re: Скрипт отправки внешнего IP на почту (если он изменился).

Добавлено: 08 ноя 2016, 20:08
podarok66
Зачем же так часто мониторить? Если вы жизненно зависите от этого адреса, 30-60 секунд, если же адрес нужен для определенных маневров, тогда по необходимости. Вы ответьте на вопрос: "Вам адрес зачем?" Если ответ будет точный и вразумительный, то и период выполнения подберете правильно.

Re: Скрипт отправки внешнего IP на почту (если он изменился).

Добавлено: 09 ноя 2016, 12:26
Heavymetall2000
podarok66 писал(а):Зачем же так часто мониторить? Если вы жизненно зависите от этого адреса, 30-60 секунд, если же адрес нужен для определенных маневров, тогда по необходимости. Вы ответьте на вопрос: "Вам адрес зачем?" Если ответ будет точный и вразумительный, то и период выполнения подберете правильно.



Я его изменил под себя, но не работает ((( :

Код: Выделить всё

# Check ip and send to e-mail if changed
#---------- Config below this line ----------

# set WAN interface name
:local WAN "ether10";
# set e-mail smtp server name
:local smtpserv [213.180.204.38];
# set e-mail Mikro@yandex.ru
:local Eaccount "Mikro@yandex.ru";
# set e-mail 12345678
:local Epassword "12345678";
# set e-mail main recipient
:local Etomail "Kostik@gmail.com";

#---------- Config above this line ----------

:global StoredIP
:local sysname [/system identity get name];
:local sysver [/system package get system version];
:local CurrIP
:log info "Get WAN interface IP address (New IP to e-mail script)"

# Get WAN interface IP address
:set CurrIP [/ip address get [/ip address find interface=$WAN] address]
:set CurrIP [:pick [:tostr $CurrIP] 0 [:find [:tostr $CurrIP] "/"]]

:if ([:len $CurrIP] = 0) do={
:log error ("Could not get IP for interface " . $WAN)
:error ("Could not get IP for interface " . $WAN)
} else={:log info "IP from $WAN get. (New IP to e-mail script)"}
:log info "Checking & sending IP if needed."

# Check IP address & send if needed

:if ($StoredIP != $CurrIP) do={
/tool e-mail send from=$Eaccount to=$Etomail \
server=$smtpserv port=587 user=$Eaccount password=$Epassword \
subject=("Mikrotik $sysname IP changed (" . [/system clock get date] . \
")") body=("New $sysname IP: $CurrIP.\nRouterOS \
version: $sysver\nTime and Date stamp: " . [/system clock get time] . " \
" . [/system clock get date]);
:log info "Send new IP to e-mail complete"
:set StoredIP "$CurrIP"
:log info "Stored IP Updated"
} else={:log info "IP not changed"}


В чем может быть ошибка?

Re: Скрипт отправки внешнего IP на почту (если он изменился).

Добавлено: 09 ноя 2016, 13:13
gmx
Посмотрите в скрипте порт SMTP у вас именно такой?

Re: Скрипт отправки внешнего IP на почту (если он изменился).

Добавлено: 09 ноя 2016, 14:04
Heavymetall2000
gmx писал(а):Посмотрите в скрипте порт SMTP у вас именно такой?


Да, такой! С такой учеткой у меня отлично скрипт работает отправки лог-файла на почту. А этот скрипт ничего в логах не отображает... У меня провайдер билайн, через l2tp протокол авторизация...

Re: Скрипт отправки внешнего IP на почту (если он изменился).

Добавлено: 09 ноя 2016, 14:18
gmx
А IP менялся?? Там ведь условие в скрипте, что он будет работать только если текущий IP не равен ранее запомненному.
И интерфейс WAN у вас не ether10, а что-то вроде pptp_out_1... ну или как-то похоже.

Re: Скрипт отправки внешнего IP на почту (если он изменился).

Добавлено: 11 ноя 2016, 11:16
Heavymetall2000
gmx писал(а):А IP менялся?? Там ведь условие в скрипте, что он будет работать только если текущий IP не равен ранее запомненному.
И интерфейс WAN у вас не ether10, а что-то вроде pptp_out_1... ну или как-то похоже.


Всем спасибо! Разобрался! Пришлось немного изменить под себя и заработало )))

Re: Скрипт отправки внешнего IP на почту (если он изменился).

Добавлено: 02 июл 2018, 09:39
dariusii

Код: Выделить всё

[iron@MikroTik] > :local WAN "7-sky";
[iron@MikroTik] > :local smtpserv [:resolve "smtp.gmail.com"];
[iron@MikroTik] > :local Eaccount "fooname@gmail.com";
[iron@MikroTik] > :local Epassword "foopass";
[iron@MikroTik] > :local Etomail "secondfooname@gmail.com";
[iron@MikroTik] > 
[iron@MikroTik] > :global StoredIP
[iron@MikroTik] > :global StoredIP
[iron@MikroTik] > :local sysname [/system identity get name];
[iron@MikroTik] > :local sysver [/system package get system version];
[iron@MikroTik] > :local CurrIP
[iron@MikroTik] > :log info "Get WAN interface IP address (New IP to e-mail script)"
[iron@MikroTik] > 
[iron@MikroTik] > :set CurrIP [/ip address get [/ip address find interface=$WAN] address]
syntax error (line 1 column 6)
ессно, гуглить :set CurrIP жесть. это может быть любая переменная для такого случая. то бишь, народ-то где-то тоже сталкивался, но поиск приводит к чему-то вот такому.