Перейти к содержимому
Калькуляторы

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чо?))

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Изменено пользователем sanctum

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

А обратно?

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.