MikroUser Опубликовано 10 октября, 2013 (изменено) · Жалоба Вобщем нужно написать скрипт, который будет определять значение 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} Изменено 10 октября, 2013 пользователем MikroUser Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 10 октября, 2013 · Жалоба Может, просто, канальные скорости скоростей B режимов отключить? Иногда помогает. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
MikroUser Опубликовано 10 октября, 2013 · Жалоба НЕ помогает, помоему мы вопрос скоростей и их теста в соседней ветке бурно обсуждали и тестировали. Скрипт - последняя надежда. Вот толкьо почему он не работает, непонятно. такое ощущение что не может извлечь last-activity, какбудьто в 6,4 сию функцию убрали! (( Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
MikroUser Опубликовано 10 октября, 2013 · Жалоба Вобщем нужен мозк программирования, ибо тут без 100граммов не разберешся) получается что можно считать параметр last-activity. но он гад выводится в формате hh.mm.ss.mls следовательно мы не можем выполнить :if (a>=300) do={... потому что переменная a - не есть целое число. есть идея, обрезать последние 7 символов переменной $A , назначить переменную $b. вписать что-то на подобии :if (b>='00:01') do={... тогда по идее скрипт должен заработать без ошибок. но вот как отрезать последне 7 сиволов мой мозк еще не вспомнил. короче, думаем дальше. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
MikroUser Опубликовано 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 он не перегружает. но на форуме микротика пишут что должно и так работать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...