Обновление маршрутов из скрипта засоряет лог
-
- Сообщения: 107
- Зарегистрирован: 03 мар 2016, 16:00
- Откуда: Санкт-Петербург
Обновление маршрутов из скрипта засоряет лог
начал решать трабл с обновами, так появилась другая проблема - лог перегружен избыточной инфой
скрипт в shedule выполняется раз в 10 сеунд, так в логах я вижу следующее: думаю, дай-ка рубану info: логи смены маршрутов прекратились, но теперь я не могу увидеть, кто заходил на тик
В общем как сделать, чтобы работа смены маршрутов скрипта (именно скрипта!!) не показывалась в логах?
Кстати, трабл с обновлением routerboard решилась, зашел сейчас в эту менюху и вижу: очень странно, так как вчера, после нажатия на клавишу "Upgrade", роутер перезагружал. Видать нужно некоторое время, чтобы прошивка обновилась. Но что означает "Factory Firmware"? Какой смысл несет параметр заводская прошивка? Типа какая прошивка была в самом начале?
Зачем нужна эта строка?
скрипт в shedule выполняется раз в 10 сеунд, так в логах я вижу следующее: думаю, дай-ка рубану info: логи смены маршрутов прекратились, но теперь я не могу увидеть, кто заходил на тик
В общем как сделать, чтобы работа смены маршрутов скрипта (именно скрипта!!) не показывалась в логах?
Кстати, трабл с обновлением routerboard решилась, зашел сейчас в эту менюху и вижу: очень странно, так как вчера, после нажатия на клавишу "Upgrade", роутер перезагружал. Видать нужно некоторое время, чтобы прошивка обновилась. Но что означает "Factory Firmware"? Какой смысл несет параметр заводская прошивка? Типа какая прошивка была в самом начале?
Зачем нужна эта строка?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сообщения: 107
- Зарегистрирован: 03 мар 2016, 16:00
- Откуда: Санкт-Петербург
Re: не понятка с обновлениями для Routerboard
кстати по логам, попробовал сделать вот такое правило:
но в логах начался переизбыток не нужной мне инфыУ вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: не понятка с обновлениями для Routerboard
логичнее всего будет не менять маршрут, если у него параметры не поменялись - тогда запись в лог будет добавляться только при непосредственной смене для подробностей нужен сам скриптsasha300 писал(а):как сделать, чтобы работа смены маршрутов скрипта (именно скрипта!!) не показывалась в логах?
нетsasha300 писал(а):Видать нужно некоторое время, чтобы прошивка обновилась.
то ли для информации, то ли резервная на случай поломки основной... данных нет даже в официальной документацииsasha300 писал(а):Но что означает "Factory Firmware"? Какой смысл несет параметр заводская прошивка? Типа какая прошивка была в самом начале?
Зачем нужна эта строка?
всё правильно, в лог попали всякие pptp,debug - а там информации действительно очень многоsasha300 писал(а):кстати по логам, попробовал сделать вот такое правило:но в логах начался переизбыток не нужной мне инфы
-
- Сообщения: 107
- Зарегистрирован: 03 мар 2016, 16:00
- Откуда: Санкт-Петербург
Re: не понятка с обновлениями для Routerboard
Ноу проблем :логичнее всего будет не менять маршрут, если у него параметры не поменялись - тогда запись в лог будет добавляться только при непосредственной смене для подробностей нужен сам скрипт
Код: Выделить всё
:local pingresult1 [ping 194.58.117.14 interface=ether1-External count=3];
:local pingresult2 [ping 8.8.4.4 interface=ether1-External count=3];
:if (($pingresult1+$pingresult2)<3) do={
/ip route enable numbers=[find gateway=192.168.8.1]
/ip route set numbers=[find gateway=192.168.8.1] distance=1
/ip route enable numbers=[find comment=ping]
/ip route set numbers=[find gateway=109.195.xx.xx and dst-address=0.0.0.0/0] distance=2
/delay 5
/system script run email
/system script run remove
/system script set remove name=reconnect
/system script set email name=stop
/system script set stay name=post
} else={
/ip route set numbers=[find gateway=192.168.8.1] distance=2
/ip route disable numbers=[find gateway=192.168.8.1]
/ip route set numbers=[find gateway=109.195.xx.xx and dst-address=0.0.0.0/0] distance=1
/ip route disable numbers=[find comment=ping]
/system script run post
/system script run reconnect
/system script set reconnect name=remove
/system script set post name=stay
/system script set stop name=email
}
p.s.: кстати, как правильно называть скрипт в System => Sheduler? А то получается что скрипты в разделе system => scripts, тогда в разделе "sheduler" что?
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: не понятка с обновлениями для Routerboard
Scheduler = планировщикsasha300 писал(а):как правильно называть скрипт в System => Sheduler? А то получается что скрипты в разделе system => scripts, тогда в разделе "sheduler" что?
на примере строки "/ip route set [find gateway=192.168.8.1] distance=1" (да, "numbers=" здесь нет необходимости писать): она ищет маршрут с указанным шлюзом и меняет ему distance, даже если он уже единица. для исправления - "find gateway=192.168.8.1 distance!=1". остальные по аналогииsasha300 писал(а):трабл с тем, что код в sheduler-е постоянно меняет маршрут, поэтому переименовка скриптов тут не при делах
ШТО-О-О?!? не проще запись в scheduler'е просто выключить, чтобы она не запускалась постоянно?..sasha300 писал(а):Если возникнет вопрос по переименовки скриптов, то делается это для того, чтобы они не запускались постоянно, типа выполнился, переименовался и т.о. больше не запускается.
-
- Сообщения: 107
- Зарегистрирован: 03 мар 2016, 16:00
- Откуда: Санкт-Петербург
Re: не понятка с обновлениями для Routerboard
Запись в scheduler'е меняет маршруты на резервный, в случае падения основного канал и возвращается на основной канал, когда тот начинает работать. Если я отключу эту запись, то у меня эта фича работать не будет. Или я чего-то не догнал?не проще запись в scheduler'е просто выключить, чтобы она не запускалась постоянно?
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: не понятка с обновлениями для Routerboard
если планировщик запускает скрипт и затем переименовывает его, чтобы он больше не запускался - так может нужно просто его не запускать, без переименований?.. я про логику работы в целом. зачем усложнять понимание?
-
- Сообщения: 107
- Зарегистрирован: 03 мар 2016, 16:00
- Откуда: Санкт-Петербург
Re: не понятка с обновлениями для Routerboard
Извиняюсь, немного выпал из темыChupaka писал(а):если планировщик запускает скрипт и затем переименовывает его, чтобы он больше не запускался - так может нужно просто его не запускать, без переименований?.. я про логику работы в целом. зачем усложнять понимание?
Сам планировщик запускается каждые 10 секунд и если случается одно из двух условий, то запускается скрипт. Но он не должен запуститься ещё через десять секунд, поэтому, планировщик, запустив один раз скрипт, меняет его имя и таким образом больше ничего не запускается. Напротив, если сложилась false ситуация, то опять же идет запуск скрипта и его дальнейшее переименование, т.о. опять скрипты отрабатываются по одному разу.
-
- Сообщения: 107
- Зарегистрирован: 03 мар 2016, 16:00
- Откуда: Санкт-Петербург
Re: не понятка с обновлениями для Routerboard
Но сейчас это не важно, не подскажете, как заблокировать вывод сообщений с тегом system, чтобы в логах этих записей не было?
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: не понятка с обновлениями для Routerboard
т.е. скрипт должен срабатывать только при изменении состояния. для этого объявляем глобальную переменную, которая предыдущее состояние хранит. если состояние изменилось - обновляем переменную, запускаем скрипт
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: не понятка с обновлениями для Routerboard
в logging rules добавить в правило, которое его выводит, тег "!system"sasha300 писал(а):как заблокировать вывод сообщений с тегом system, чтобы в логах этих записей не было?
-
- Сообщения: 107
- Зарегистрирован: 03 мар 2016, 16:00
- Откуда: Санкт-Петербург
Re: не понятка с обновлениями для Routerboard
Можете это отразить в коде? А то слабо представляю, как глобальная переменная будет хранить предыдущее состояниедля этого объявляем глобальную переменную, которая предыдущее состояние хранит. если состояние изменилось - обновляем переменную, запускаем скрипт
И как понимаю, при вашем решении не будет такого бардака с логами?
Сделал вот так: Все равно выдает изменение маршрутов, если же делаю так: то начинает выдавать чересчур подробная информация.которое его выводит, тег "!system"
Кстати, а как узнать, какие сообщения не будут приходить, если блокирнуть system? А то вот тут написано, что "Generic system messages", в частности интересует, будут ли при !system отражаться, кто когда заходил на Микротик? Методом тыка можно, но ведь должно же быть подробное разьяснение по этому тегу в доках!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: не понятка с обновлениями для Routerboard
как-то так:sasha300 писал(а):Можете это отразить в коде? А то слабо представляю, как глобальная переменная будет хранить предыдущее состояниедля этого объявляем глобальную переменную, которая предыдущее состояние хранит. если состояние изменилось - обновляем переменную, запускаем скрипт
И как понимаю, при вашем решении не будет такого бардака с логами?
Код: Выделить всё
global prevState;
if (_CONDITION_) do={
if (!$prevState) do={
put "going from false to true";
set prevState true;
}
} else={
if ($prevState) do={
put "going from true to false";
set prevState false;
}
}
-
- Сообщения: 107
- Зарегистрирован: 03 мар 2016, 16:00
- Откуда: Санкт-Петербург
Re: не понятка с обновлениями для Routerboard
спасибо, но уже буду опробую завтра
-
- Сообщения: 107
- Зарегистрирован: 03 мар 2016, 16:00
- Откуда: Санкт-Петербург
Re: не понятка с обновлениями для Routerboard
Переменная prevState принимает только булев тип, т.е. значения 0 или 1?
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: не понятка с обновлениями для Routerboard
что в неё записать - то она и примет. в RouterOS нет строгой типизации
тот пример, что я привёл, точно работает, я сначала проверил его у себя
тот пример, что я привёл, точно работает, я сначала проверил его у себя
-
- Сообщения: 107
- Зарегистрирован: 03 мар 2016, 16:00
- Откуда: Санкт-Петербург
Re: не понятка с обновлениями для Routerboard
В общем вот сам скрипт в shedule, не дающий в log лишнюю инфу:
Хотя код выполняет все необходимые задачи, но может есть какие-то замечания?
p.s.: про
Код: Выделить всё
:global condition
:if ($condition = nil) do={
:set $condition "no"
} else={
:local pingresult1 [ping 194.58.117.14 interface=ether1-External count=3];
:local pingresult2 [ping 8.8.4.4 interface=ether1-External count=3];
:if (($pingresult1+$pingresult2)<2) do={
:if ($condition = "yes") do={
/ip route enable numbers=[find gateway=192.168.8.1]
/ip route set numbers=[find gateway=192.168.8.1] distance=1
/ip route enable numbers=[find comment=ping]
/ip route set numbers=[find gateway=109.195.xx.xx and dst-address=0.0.0.0/0] distance=2
:set condition "no"
/delay 5
/system script run email
/system script run reconnect
}
} else={
:if ($condition = "no") do={
/ip route set numbers=[find gateway=192.168.8.1] distance=2
/ip route disable numbers=[find gateway=192.168.8.1]
/ip route set numbers=[find gateway=109.195.xx.xx and dst-address=0.0.0.0/0] distance=1
/ip route disable numbers=[find comment=ping]
:set condition "yes"
/delay 5
/system script run post
/system script run reconnect
}
}
}
p.s.: про
знаю, немного попозже уберу, интересуют другие замеченные ошибки"numbers=" здесь нет необходимости писать
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: не понятка с обновлениями для Routerboard
теперь хоть понятно, кто там что делает, безо всех этих переименований
-
- Сообщения: 107
- Зарегистрирован: 03 мар 2016, 16:00
- Откуда: Санкт-Петербург
Re: не понятка с обновлениями для Routerboard
так а сам код? есть ли по нему замечания?
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: не понятка с обновлениями для Routerboard
нет единственное, я бы не стал усложнять дело проверкой на nil с последующим присваиванием "no" (чего в моём примере и не было). проще всё, что не "yes", считать этим самым "no" - и не заморачиваться
-
- Сообщения: 107
- Зарегистрирован: 03 мар 2016, 16:00
- Откуда: Санкт-Петербург
Re: Обновление маршрутов из скрипта засоряет лог
Немного переделал скрипт:
Так даже первое do не срабатывает! Или весь код поставить в условие :set $variable true; ?:global variable
:local pingresult1 [ping 194.58.117.14 interface=ether1-External count=3];
:local pingresult2 [ping 8.8.4.4 interface=ether1-External count=3];
:if (($pingresult1+$pingresult2)<2) do={
:if (!$variable) do={
/ip route enable [find gateway=192.168.8.1]
/ip route set [find gateway=192.168.8.1] distance=1
/ip route enable [find comment=ping]
/ip route set [find gateway=109.195.xx.xx and dst-address=0.0.0.0/0] distance=2
:set variable true;
/delay 5
/system script run email
/system script run reconnect
}
}
else={
:if ($variable) do={
/ip route set [find gateway=192.168.8.1] distance=2
/ip route disable [find gateway=192.168.8.1]
/ip route set [find gateway=109.195.xx.xx and dst-address=0.0.0.0/0] distance=1
/ip route disable [find comment=ping]
:set condition false;
/delay 5
/system script run post
/system script run reconnect
}
}
}
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Обновление маршрутов из скрипта засоряет лог
может, потому, что во втором делается что-то таинственное: ":set condition false;"?sasha300 писал(а):Так даже первое do не срабатывает!
подозреваю, там вместо condition должно быть variable
UPD: подсказка: если код обрамлять тегом code, а не quote, то будет сохраняться форматирование
-
- Сообщения: 107
- Зарегистрирован: 03 мар 2016, 16:00
- Откуда: Санкт-Петербург
Re: Обновление маршрутов из скрипта засоряет лог
в общем с этим скриптом закончил, все работает (правда оставил number, так как так проще):
p.s.: форматирование удалилось, так как копировал из самого шедуллера. В notepadd++ код не сохранился
Код: Выделить всё
:global condition
:local pingresult1 [ping 194.58.117.14 interface=ether1-External count=3];
:local pingresult2 [ping 8.8.4.4 interface=ether1-External count=3];
:if (($pingresult1+$pingresult2)<2) do={
:if ($condition) do={
/ip route enable numbers=[find gateway=192.168.8.1]
/ip route set numbers=[find gateway=192.168.8.1] distance=1
/ip route enable numbers=[find comment=ping]
/ip route set numbers=[find gateway=109.195.xx.xx and dst-address=0.0.0.0/0] distance=2
:set condition false;
/delay 5
/system script run email
/system script run reconnect
}
} else={
:if (!$condition) do={
/ip route set numbers=[find gateway=192.168.8.1] distance=2
/ip route disable numbers=[find gateway=192.168.8.1]
/ip route set numbers=[find gateway=109.195.xx.xx and dst-address=0.0.0.0/0] distance=1
/ip route disable numbers=[find comment=ping]
:set condition true
/delay 5
/system script run post
/system script run reconnect
}
}