Jump to content
Калькуляторы

Mikrotik Bandwidth-test script

Добрый день! Друзья, помогите! Есть такой скрипт:

 

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. Надо как то автоматизировать процесс замера (запись результатов в лог или файл или переменную) и с этой цифрой вести сравнение из других скриптов. На баше я бы давно это реализовал, с микротиком не ясно как... Возможно это вообще на микротик?

Share this post


Link to post
Share on other sites

Чо?))

:-) упрощу, скрипт:

 

/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 затрудняюсь, прошу помощи :-)

Share this post


Link to post
Share on other sites

sanctum, если надо запоминать только одно последнее число - пишите в поле комментария хоть к интерфейсу, хоть к самому скрипту. В принципе и цепочку показаний можно в виде комментария с разделителями оформлять.

Share this post


Link to post
Share on other sites

sanctum, если надо запоминать только одно последнее число - пишите в поле комментария хоть к интерфейсу, хоть к самому скрипту. В принципе и цепочку показаний можно в виде комментария с разделителями оформлять.

Не очень понятно, каким образом. В bash, я бы запустил скрипт фоном, вывод перенаправил в файл, файл распарсил командой, т.е. выбрал бы нужное значение, с которым сравнил. Здесь единственное, что приходит на ум, это каким то образом перенаправить это число в лог и из лога считать, при этом не ясно может ли скрипт выполняться в фоне. Ну и писАть регулярно что-то в лог, насколько понимаю, не лучший вариант для flash памяти железки, помрет быстрее...

Edited by sanctum

Share this post


Link to post
Share on other sites

Если хотите на линуксовой машине получать/логироаать результат скрипта - поднимите snmp или syslog и принимайте значения в него. syslog проще. На микротике соответственно настраиваете экшн "remote" к нужным топикам и через ":log .. " выкидываете результат на линуксовую машину.

Share this post


Link to post
Share on other sites

и через ":log .. " выкидываете результат на линуксовую машину

А обратно?

Все же хотелось бы понять:

1) Script Mikrotik может выполняться в фоне.

2) записывать результат в некий файл, пусть лог локальный или удаленный (про удаленный понятно).

3) Если брать результат - лог, надо распарсить его и получить нужную цифру и тут с Mikrotik не все ясно, кроме find вроде и нет ни чего...

Share this post


Link to post
Share on other sites

Есть массивы и работа с их элементами.

Там все не так сложно.

Нужно толтко с критериями определиться, по которым принимать решение.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.