sanctum Posted December 26, 2016 · Report post Добрый день! Друзья, помогите! Есть такой скрипт: tool { :local txAvg 0 :local rxAvg 0 bandwidth-test 192.168.1.1 duration=10s direction=both user=admin password=******* do={ :if ($txAvg < $"tx-10-second-average") do={ :set txAvg $"tx-10-second-average" } :if ($rxAvg < $"rx-10-second-average") do={ :set rxAvg $"rx-10-second-average" } } :put ("tx: " . ($txAvg/1024) . " rx: " . ($rxAvg/1024)) } Скрипт делает замер скорости, с Mikrotik 192.168.1.1, где Bandwidth запущен сервером. В результате работы получаем следующее: [admin@MikroTik] /system script> run test status: done testing duration: 10s tx-current: 7.5Mbps tx-10-second-average: 9.6Mbps tx-total-average: 9.6Mbps rx-current: 6.5Mbps rx-10-second-average: 6.2Mbps rx-total-average: 6.2Mbps lost-packets: 2106 random-data: no direction: both tx-size: 1500 rx-size: 1500 tx: 10129 rx: 8268 Собственно интересуют две последние цифры, можно оставить одну без tx/rx. Надо как то автоматизировать процесс замера (запись результатов в лог или файл или переменную) и с этой цифрой вести сравнение из других скриптов. На баше я бы давно это реализовал, с микротиком не ясно как... Возможно это вообще на микротик? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
myth Posted December 26, 2016 · Report post Чо?)) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
sanctum Posted December 27, 2016 · Report post Чо?)) :-) упрощу, скрипт: /tool { :local rxAvg 0 bandwidth-test 192.168.1.1 duration=10s direction=both user=admin password=password do={ :if ($rxAvg < $"rx-10-second-average") do={ :set rxAvg $"rx-10-second-average" } } :put ($rxAvg/1024) } Результат: [admin@MikroTik] /system script> run test1 status: done testing duration: 11s tx-current: 5.5Mbps tx-10-second-average: 2.7Mbps tx-total-average: 2.7Mbps rx-current: 4.6Mbps rx-10-second-average: 3.6Mbps rx-total-average: 3.6Mbps lost-packets: 845 random-data: no direction: both tx-size: 1500 rx-size: 1500 4389 Надо взять цифру 4389, куда то её записать или запомнить, скрипт надо выполнять автоматом. С этой цифрой в дальнейшем будет вестись сравнение для переключение на другого провайдера. Стандартно резервирование строится на ICMP проверке канала, но в моем случае есть особенность, основной канал не умирает, но может здорово просядать. Хочу сделать такую логику, если значение замера меньше или равно 2000, переходим на второй канал. Повторюсь, на bash сделать, нет проблем, в Mikrotik затрудняюсь, прошу помощи :-) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted December 27, 2016 · Report post sanctum, если надо запоминать только одно последнее число - пишите в поле комментария хоть к интерфейсу, хоть к самому скрипту. В принципе и цепочку показаний можно в виде комментария с разделителями оформлять. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
sanctum Posted December 27, 2016 (edited) · Report post sanctum, если надо запоминать только одно последнее число - пишите в поле комментария хоть к интерфейсу, хоть к самому скрипту. В принципе и цепочку показаний можно в виде комментария с разделителями оформлять. Не очень понятно, каким образом. В bash, я бы запустил скрипт фоном, вывод перенаправил в файл, файл распарсил командой, т.е. выбрал бы нужное значение, с которым сравнил. Здесь единственное, что приходит на ум, это каким то образом перенаправить это число в лог и из лога считать, при этом не ясно может ли скрипт выполняться в фоне. Ну и писАть регулярно что-то в лог, насколько понимаю, не лучший вариант для flash памяти железки, помрет быстрее... Edited December 27, 2016 by sanctum Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted December 27, 2016 · Report post Если хотите на линуксовой машине получать/логироаать результат скрипта - поднимите snmp или syslog и принимайте значения в него. syslog проще. На микротике соответственно настраиваете экшн "remote" к нужным топикам и через ":log .. " выкидываете результат на линуксовую машину. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
sanctum Posted December 30, 2016 · Report post и через ":log .. " выкидываете результат на линуксовую машину А обратно? Все же хотелось бы понять: 1) Script Mikrotik может выполняться в фоне. 2) записывать результат в некий файл, пусть лог локальный или удаленный (про удаленный понятно). 3) Если брать результат - лог, надо распарсить его и получить нужную цифру и тут с Mikrotik не все ясно, кроме find вроде и нет ни чего... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted December 31, 2016 · Report post Есть массивы и работа с их элементами. Там все не так сложно. Нужно толтко с критериями определиться, по которым принимать решение. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...