Добавить время ожидания в скрипт

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Ответить
maxim_minton
Сообщения: 120
Зарегистрирован: 14 мар 2017, 13:03

Ситуация в следующем. На НАСе есть php генерирующий адреса для StopAD на микротике запускается скрипт, который периодически забирает эти адреса. Но иногда скрипт выполняется в тот момент, когда на НАСе спящий режим и все отключено. НАС выводиться из спящего режима просто обращением к нему и через 10 сек он готов к работе. Вопрос в следующем, что добавить к сrрипту, чтоб он подождал эти 10 сек, а не выбивал сразу же ошибку.

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

:local hostScriptUrl "http://192.168.1.8/test.php";
:local scriptName "AutoADBlock";
:local backupFileName "before_stopad";
:local logPrefix "[StopAD]";
do {
  /tool fetch mode=http url=$hostScriptUrl dst-path=("./".$scriptName);
  :delay 20s;
   :if ([:len [/file find name=$scriptName]] > 0) do={
   /system backup save name=$backupFileName;
     :delay 20s;
     :if ([:len [/file find name=($backupFileName.".backup")]] > 0) do={
     /ip dns static remove [/ip dns static find comment=ADBlock];
       /import file-name=$scriptName;
       /file remove $scriptName;
       :log info "$logPrefix AD block script imported, backup file (\"$backupFileName.backup\") created";
     } else={
       :log warning "$logPrefix Backup file not created, importing AD block script stopped";
     }
 } else={
     :log warning "$logPrefix Backup file not downloaded, script stopped";
     }
} on-error={
 :log warning "$logPrefix AD block script download FAILED";}


gmx
Модератор
Сообщения: 3290
Зарегистрирован: 01 окт 2012, 14:48

Написать два скрипка.
Первый будет просто обращаться к нас, чтобы он включился, а второй будет делать все остальное.
Ну и запускать их с некоторой разницей по времени.


maxim_minton
Сообщения: 120
Зарегистрирован: 14 мар 2017, 13:03

gmx писал(а):Написать два скрипка.
Первый будет просто обращаться к нас, чтобы он включился, а второй будет делать все остальное.
Ну и запускать их с некоторой разницей по времени.

Это я уже придумывал, но надеялся, что есть более элегантное решение :-)


Аватара пользователя
Vlad-2
Модератор
Сообщения: 2531
Зарегистрирован: 08 апр 2016, 19:19
Откуда: Петропавловск-Камчатский (п-ов Камчатка)
Контактная информация:

maxim_minton писал(а):Это я уже придумывал, но надеялся, что есть более элегантное решение :-)

Я бы иначе поступил, я бы запретил НАСу "спать". У некоторых насов есть сон для винтов,
но зачем НАС отключать/усыплять? Днём с ним работают, по вечерам/ночам архивация идёт.
Да и я вычитал что лишнее включение/выключение хуже, чем долгая работа, да и практика показывает,
НАСы должны работать, а не спать. Я не беру в расчёт совсем маленькие НАСы, скажем дома,
для просмотра видео-контента.

В любом случаи тут два пути, или не давать заснуть НАСу и чтобы работа выполнялась всегда,
или как Вам посоветовали, отдельным скриптом/запросом пробуждать спящее устройство.



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

А обратиться в начале скрипта к NAS и затем сделать delay 15; не судьба? Если он за 10 сек пробуждается... Зачем два скрипта?


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

Vlad-2 писал(а):
maxim_minton писал(а):Это я уже придумывал, но надеялся, что есть более элегантное решение :-)

Я не беру в расчёт совсем маленькие НАСы, скажем дома,

Как раз про домашний и идет речь, он мне нужен только по вечерам после работы, ну или в течении дня никаких проблем пользования им нет, его программы архивации будят, и все нормально, но это редко.

podarok66 писал(а):А обратиться в начале скрипта к NAS и затем сделать delay 15; не судьба?

Как оказалось, не судьба, я не пойму как и что написать.


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

maxim_minton писал(а):Как оказалось, не судьба, я не пойму как и что написать.

Вы выясните, какого обращения достаточно для пробуждения NAS. (Например пинга хватит или нет?) Выполните это действие, затем прописываете следующим шагом delay 15; что означает ждать 15 секунд, затем ваш скрипт.


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