DynDNs

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Аватара пользователя
pubuser
Сообщения: 62
Зарегистрирован: 14 мар 2014, 18:14

Доработал скрипт до такого вида, может кому пригодится. Настройки сделал для яндекс почты но тут кому как угодно, дело вкуса. Решил ввести отдельные адреса - отправителя и получателя, самому себе на ящик как то не кошерно получается отправлять. Тем более что давно есть выделенный ящик под бэкапы роутера. Туда же будут сыпаться письма от скрипта этого)

 Текст скрипта

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

{
:global myIP;
:local int "WAN";
:local newaddress [/ip address get [find interface="$int" disabled=no] address];
if ($myIP=$newaddress) do={
:log warning "DynDNS System: ip address on $int not changed, standby."
:delay 2;
:log warning "DynDNS System: Current ip address - $myIP "
:log warning "*************************************************************************"
} else={
:set myIP $newaddress;
:local sysname [/system identity get name];
:local smtpserv [:resolve "smtp.yandex.ru"];
:local Eaccount "mailfrom@yandex.ru";
:local Zaccount "mailto@yandex.ru";
:local pass "mailto-password";
/tool e-mail send from="<$Eaccount>" to=$Zaccount \
server=$smtpserv port=587 user=$Eaccount password=$pass \
start-tls=yes \
subject=("$sysname set new ip: $myIP (" . [/system clock get time] . ")") body=("New ip address $sysname - $myIP");
:delay 2;
:log warning "DynDNS System: ip address on $int has been changed, start script..."
:delay 2;
:log warning "DynDNS System: Interface $int setup new ip address - $myIP"
:delay 2;
:log warning "DynDNS System: New ip address has been sended on E-Mail."
:delay 2;
:log warning "Transfer E-Mail completed!\nAll Done!";
}



Протестировал на динамическом адресе PPP интерфейса - отрабатывает как часы, при изменении ip на интерфейсе шлет мыло, если адрес не поменялся - строчку в лог и ждем следующего срабатывания по шедулеру.


Аватара пользователя
podarok66
Модератор
Сообщения: 4368
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Логов просто куча получается, ни к чему оно, имхо. Тут ведь как, есть новое письмо - адрес сменился, нету - значит работает старый.
Конечно, в идеале надо бы добавить условие, в котором надо проверить вообще доступность всемирной паутины перед отработкой основного скрипта. Нет доступа - перенос старта скрипта на какое-то время (например, на час).
Но тут уж по желанию...


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Аватара пользователя
pubuser
Сообщения: 62
Зарегистрирован: 14 мар 2014, 18:14

Выяснилась еще одна проблема при работе со скриптом. После первого запуска он само собой отсылает на почту ip, но при последующих запусках делает то же самое, хотя не должен,Ю ip то не меняется больше. Путем наблюдения выяснил, что такое происходит, если отслеживаемый интерфейс теряет линк хотя бы на 5-10 секунд. Как нибудь можно писать данные от скрипта в файл на диске микрота, чтобы он оттуда сравнивал значение первый раз определенного ip с текущим значением? Если ip совпадает, ничего не делаем, если не совпадает - переписываем файл новым значением и шлем емайл.


Аватара пользователя
podarok66
Модератор
Сообщения: 4368
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

pubuser писал(а):если отслеживаемый интерфейс теряет линк хотя бы на 5-10 секунд

то этот интерфейс по определению меняет свой адрес (отсутствие адреса - тоже его смена). И скрипт на это реагирует. А как Вы хотели?
Письмо при ребуте - тоже норма, маршрутизатору незачем перезагружаться впустую, вот посмотрел, у меня на домашнем аптайм 35 дней. Видимо с последнего обновления программного обеспечения. В файл писать текст можно, код:

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

/file print file=myFile
/file set myFile.txt contents=""

У меня в коде вместе эти две команды работали только с задержкой между ними:

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

{/file print file=myFile;
:delay 1;
/file set myFile.txt contents="123"}

Но мне эта затея не нравится, честно.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Аватара пользователя
pubuser
Сообщения: 62
Зарегистрирован: 14 мар 2014, 18:14

А чем не нравится? Ведь пишет же скрипт файлы бэкапов, к примеру. А как по вашему пофиксить эту проблему? Ведь фактически ip не меняется даже после вкл\выкл интерфейса.


Аватара пользователя
podarok66
Модератор
Сообщения: 4368
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

pubuser писал(а):А чем не нравится? Ведь пишет же скрипт файлы бэкапов, к примеру. А как по вашему пофиксить эту проблему? Ведь фактически ip не меняется даже после вкл\выкл интерфейса.

Да не вижу я проблемы, правда не вижу. У Вас что, роутер каждые полчаса перезагружается или канал рвется постоянно? Если да, то проблема не в скрипте, а в питании или надо решать с каналом. Скрипт отрабатывает то, что ему сказано, он молодец :-):
Потом, у Вас с какой частотой он срабатывает? Тут частые срабатывания ни к чему, по-моему. Минут 10 интервал в самый раз...
И что значит не меняется? Выключили интерфейс нет адреса, включили - есть. Меняется!!!


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Аватара пользователя
pubuser
Сообщения: 62
Зарегистрирован: 14 мар 2014, 18:14

Срабатывает раз в сутки. Переобжал все коннекторы на всякий случай, никаких перезагрузок роутера не было ни раньше ни сейчас, сейчас линк больше не пропадает но скрипт по шедулеру отрабатывая все равно почему то думает что ip поменялся хотя он не изменился, и шлет емайл. В чем по вашему может быть проблема?


Аватара пользователя
podarok66
Модератор
Сообщения: 4368
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

pubuser писал(а):В чем по вашему может быть проблема?

Представления не имею, специально запускал скрипт у себя раз 10 подряд, отрабатывает, как и планировалось. Проверяйте у себя. Логируйте пошагово работу и увидите, где спотыкается программа. Вы думаете строка

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

# :log info "Goods!"

это мой каприз? Ничуть, я тоже отлаживал работу скрипта по логам. Это еще только один пункт, в сложных скриптах я при наладке логирую всё, что только смогу...
А Ваша куча логов в скрипте только мусор производит.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Аватара пользователя
pubuser
Сообщения: 62
Зарегистрирован: 14 мар 2014, 18:14

Вручную сколько бы раз подряд не запускал - всегда отрабатывает как надо, пишет ip не изменился и ведет себя как положена. Проблема именно в суточном запуске по шедулеру. Поставил в 9 утра запуск каждый день - отрабатывает и шлет мыло как будто поменялся ip, если руками запустить в любое время другое - пишет что ip не изменен.


Аватара пользователя
pubuser
Сообщения: 62
Зарегистрирован: 14 мар 2014, 18:14

Ну как всегда, проблема была одновременно и проста и сложна) Я случайно заметил такую вещь в скриптах как вкладку Environment. А так же упустил из виду факт что скрипта у меня работало 2, для двух разных интерфейсов от разных провайдеров. И они, запускаясь в разное время, подменяли глобальное значение myIP каждый на свое, теперь все встало на свои места.


Ответить