MikroUser Posted October 10, 2013 Posted October 10, 2013 (edited) Вобщем нужно написать скрипт, который будет определять значение LastActivity, и в случае если оно больше 500 - перезагружать роутер. софт писал я лет 5 назад, и то на уровне начинающего, потому буду несколько дней разбираться. Может у кого свежий мозк, помогите плз? на скорую руку набросал такое, но дает ошибку, пока не разобрался while (true) do={:local creg [/in wi reg print count-only]; :local counts ($creg -1); :for x from=0 to=$counts do={:local a [/in wi reg get number=$x last-activity]; :if (a>=300) do={:put “run”;} else={:put “No run”;}}; delay 10} Edited October 10, 2013 by MikroUser Вставить ник Quote
Saab95 Posted October 10, 2013 Posted October 10, 2013 Может, просто, канальные скорости скоростей B режимов отключить? Иногда помогает. Вставить ник Quote
MikroUser Posted October 10, 2013 Author Posted October 10, 2013 НЕ помогает, помоему мы вопрос скоростей и их теста в соседней ветке бурно обсуждали и тестировали. Скрипт - последняя надежда. Вот толкьо почему он не работает, непонятно. такое ощущение что не может извлечь last-activity, какбудьто в 6,4 сию функцию убрали! (( Вставить ник Quote
MikroUser Posted October 10, 2013 Author Posted October 10, 2013 Вобщем нужен мозк программирования, ибо тут без 100граммов не разберешся) получается что можно считать параметр last-activity. но он гад выводится в формате hh.mm.ss.mls следовательно мы не можем выполнить :if (a>=300) do={... потому что переменная a - не есть целое число. есть идея, обрезать последние 7 символов переменной $A , назначить переменную $b. вписать что-то на подобии :if (b>='00:01') do={... тогда по идее скрипт должен заработать без ошибок. но вот как отрезать последне 7 сиволов мой мозк еще не вспомнил. короче, думаем дальше. Вставить ник Quote
MikroUser Posted October 11, 2013 Author Posted October 11, 2013 Полночи не поспал, помог себе сам. Скрипт получился следующий while (true) do={:local a [/in wi reg get number=0 last-activity]; :local b {[:pick $a +4]}; :put $b; :if (b=1) do={[/system reboot];} else={:delay 10;}};} т.е. он читает значение минут, если последняя активность =1 минута(+59сек) значит радио подвисло и роутер надо перезагрузить. если активность меньше минуты - ждем 10 сек и выполнняем скрипт заново. по идее должно работать :) но есть одно но, в терминале запустить сей скрипт - спрашивает подтверждение, перезагрузить или нет, и пока не нажмешь y он не перегружает. но на форуме микротика пишут что должно и так работать. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.