Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Скрипт для ручного теста пропускной способности и сохранения результатов в файл

    Скрипт для ручного теста пропускной способности и сохранения результатов в файл

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Скрипт для ручного теста пропускной способности и сохранения результатов в файл, RouterOS
     
    vader7071
    Guest
    #1
    0
    11.01.2018 20:18:00
    Надеюсь, кто-то сможет помочь с этим вопросом. Вот желаемый конечный результат. Я хочу иметь возможность запускать скрипт (вручную), чтобы мой CRS109 выполнял тест пропускной способности и сохранял результаты в файл.

    Хочу, чтобы тест длился ровно 10 секунд. Эта команда работает в терминале и при запуске скрипта из терминала:  
    /tool bandwidth-test $target duration=10s direction=both local-udp-tx-size=1000 protocol=udp remote-udp-tx-size=1000 user=$user pass=$pass

    Уверен, все видели, как она работает. Я получаю такие результаты:  
    status: completed  
    duration: 10s  
    tx-current: 0bps  
    …и так далее.

    Что мне нужно — это взять все эти значения и записать их в текстовый файл. Создавая тестовый скрипт, я смог использовать команду /file set $filename contents=$data, и в файл записался просто какой-то мусор. Так что я знаю, как положить данные в файл, и могу провести тест, чтобы получить данные.

    Проблема сейчас в том, как заставить данные записаться в файл.  
    Заранее спасибо за помощь!
     
     
     
    boredwitless
    Guest
    #2
    0
    10.07.2018 09:28:00
    Ты продвинулся с этим? Я совсем новичок в скриптах, поэтому пытаюсь разобраться по другим постам. http://forum.mikrotik.com/t/bandwidth-test-in-a-script/17175/1 http://forum.mikrotik.com/t/bandwidth-test-for-email/74692/1
     
     
     
    vader7071
    Guest
    #3
    0
    10.07.2018 11:18:00
    Я сделал это. Сейчас я не рядом с роутером, но вечером напишу, как мне удалось настроить всё.
     
     
     
    vader7071
    Guest
    #4
    0
    10.07.2018 11:48:00
    Мне удалось подключиться удалённо. Вот как я это сделал: создал скрипт с таким содержимым. Я назвал его «server0». Обязательно обнови IP-адрес тестового сервера. Можно увеличить длительность теста больше чем 15 секунд, но лично я не хотел перегружать тестовый сервер.

    /tool bandwidth-test xxx.xxx.xxx.xxx protocol=udp local-udp-tx-size=1000 remote-udp-tx-size=1000 direction=both duration=15s user=btest password=btest do={
     :local txc
     :local txcA
     :local txcB
     :local txcC

     :local rxc
     :local rxcA
     :local rxcB
     :local rxcC

     :local rxta
     :local rxtaA
     :local rxtaB
     :local rxtaC

     :local txta
     :local txtaA
     :local txtaB
     :local txtaC

     :local sysname [/system identity get name]
     :local datetime "$[/system clock get date] $[/system clock get time]"
     :local result
     :local month
     :local day
     :local year
     :local hour
     :local min

     :set month [:pick $datetime 0 3]
     :set day [:pick $datetime 4 6]
     :set year [:pick $datetime 7 11]
     :set hour [:pick $datetime 12 14]
     :set min [:pick $datetime 15 17]

     :set txcA ($"tx-current" / 1000)
     :set txcB ($txcA / 1000 * 1000)
     :set txcC ($txcA - $txcB)
     :set txcB ($txcB / 1000)
     :set txc "$txcB.$txcC"

     :set rxcA ($"rx-current" / 1000)
     :set rxcB ($rxcA / 1000 * 1000)
     :set rxcC ($rxcA - $rxcB)
     :set rxcB ($rxcB / 1000)
     :set rxc "$rxcB.$rxcC"

     :set rxtaA ($"rx-total-average" / 1000)
     :set rxtaB ($rxtaA / 1000 * 1000)
     :set rxtaC ($rxtaA - $rxtaB)
     :set rxtaB ($rxtaB / 1000)
     :set rxta "$rxtaB.$rxtaC"

     :set txtaA ($"tx-total-average" / 1000)
     :set txtaB ($txtaA / 1000 * 1000)
     :set txtaC ($txtaA - $txtaB)
     :set txtaB ($txtaB / 1000)
     :set txta "$txtaB.$txtaC"

     :set result $status
    }

    /file print file="$year$month$day-$hour$min-report.txt"
    /file set "$year$month$day-$hour$min-report.txt" contents="$sysname
    $datetime

    Result : $result
    Server : xxx.xxx.xxx.xxx

    Upload burst speed $txc Mbps/s
    Download burst speed $rxc Mbps/s

    Upload total average $txta Mbps/s
    Download total average $rxta Mbps/s"
    }

    Когда скрипт готов, создаём планировщик с такой командой: /system script run server0

    Вот и всё, у меня было три разных скрипта (server0, server1, server2), каждый с собственным планировщиком. Каждый скрипт проверял свой тестовый сервер, чтобы понять, была ли проблема с моим интернет-провайдером. Тестируя три сервера, я видел: если всегда один сервер показывает низкие показатели — проблема на его стороне, а если все три — значит проблема у меня. Расписания запускались в 00:00, 03:40 и 07:20 с повторением каждые 11 часов. Это позволяло на протяжении дня видеть, когда интернет тормозит, а когда всё стабильно.

    Когда скрипт срабатывал, он сохранял *.txt файл на роутере, который можно было потом скачать. Отчёт выглядел так:

    {имя роутера}
    apr/01/2018 07:10:00

    Result : done testing
    Server : xxx.xxx.xxx.xxx

    Upload burst speed 4.935 Mbps/s
    Download burst speed 11.253 Mbps/s

    Upload total average 5.302 Mbps/s
    Download total average 11.404 Mbps/s

    Кстати, этот отчёт я показывал своему провайдеру, чтобы доказать, что они не дают обещанных скоростей. Надеюсь, это поможет!
     
     
     
    jo2jo
    Guest
    #5
    0
    24.11.2018 23:48:00
    Спасибо, что опубликовали это! У меня уже был скрипт, который запускал тест пропускной способности (BW test) каждые 5 минут, но тогда я просто использовал SNMP, чтобы «схватить» результаты (то есть SNMP-трафик с коротким интервалом и поиск пиков). Я могу добавить это — для некоторых своих скриптов на mt один из способов получить значение переменной (или результат скрипта), если это число (возможно, только целое — не уверен), — это присвоить значение переменной имени Simple Queue. А потом через SNMP можно вытащить значение имени этой очереди (и, соответственно, построить график по переменной скрипта). Я использую это для графиков количества активных VPN-сессий на моем mt VPN-сервере (или, например, для SNMP-графиков текущего количества «открытых/отслеживаемых NAT-соединений» через /ip firewall connections print count).

    P.S. У меня ещё один такой скрипт, настроенный для SNMP-графика значения /ip neighbor count — ниже скрипт, который я написал для этой задачи. Я собираюсь модифицировать ваш скрипт, чтобы попытаться сделать SNMP-график результатов запланированных BW тестов — если получится, выложу через несколько часов. У меня просто одна запись в scheduler, которая запускается каждые 5 минут:

    Код:  
    /queue simple set [find comment="SNMPget_vpnACTIVEconnections_Count_Holder"] name=[/ppp active print count-only]

    Или экспорт:  

    /system scheduler  
    add interval=4m name=queueIPneighbor on-event="/queue simple set [find comment=\"SNMPget_vpnACTIVEconnections_Count_Holder\"] name=[/ppp active print count-only]" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-time=startup

    Вам нужно создать простую очередь, чтобы хранить это значение, можно задать disabled=yes (затем использовать /queue simple print oid, чтобы получить её SNMP OID для опроса).

    P.S.2 — ну вот, быстро и просто! Конечно, всю основную работу проделал автор темы — vader7071. Я просто удалил пару строк и добавил несколько, он сделал тяжёлую работу!  

    Нужно создать 2 отключённые simple queues с именами: bwTX и bwRX (затем через /queue simple print oid взять oid параметра «name=» каждой из этих двух очередей и вставить в ваш SNMP графический инструмент, я использую PRTG). И, конечно, указать IP вашего BW тест-сервера (именно IP, а не DNS). Я использую его переменные txcB / rxcB, так как на сайтах у меня скорости в мегабитах. Если нужно измерять в килобитах или ниже, можно подкорректировать переменные (или использовать прямой вывод из bw-test, например $txc, но убрать деление на «/1000»).

    {
    :local txc  
    :local txcA  
    :local txcB  
    :local txcC  

    :local rxc  
    :local rxcA  
    :local rxcB  
    :local rxcC  

    :local rxta  
    :local rxtaA  
    :local rxtaB  
    :local rxtaC  

    :local txta  
    :local txtaA  
    :local txtaB  
    :local txtaC  

    /tool bandwidth-test x.x.x.x protocol=tcp direction=both duration=5s do={  

    :set txcA ($"tx-current" / 1000)  
    :set txcB ($txcA / 1000 * 1000)  
    :set txcC ($txcA - $txcB)  
    :set txcB ($txcB / 1000)  
    :set txc "$txcB.$txcC"  

    :set rxcA ($"rx-current" / 1000)  
    :set rxcB ($rxcA / 1000 * 1000)  
    :set rxcC ($rxcA - $rxcB)  
    :set rxcB ($rxcB / 1000)  
    :set rxc "$rxcB.$rxcC"  

    :set rxtaA ($"rx-total-average" / 1000)  
    :set rxtaB ($rxtaA / 1000 * 1000)  
    :set rxtaC ($rxtaA - $rxtaB)  
    :set rxtaB ($rxtaB / 1000)  
    :set rxta "$rxtaB.$rxtaC"  

    :set txtaA ($"tx-total-average" / 1000)  
    :set txtaB ($txtaA / 1000 * 1000)  
    :set txtaC ($txtaA - $txtaB)  
    :set txtaB ($txtaB / 1000)  
    :set txta "$txtaB.$txtaC"  

    }  

    #:log warning "rxta:"  
    #:log warning ($rxtaB)  
    #:log warning "txcB:"  
    #:log warning ($txcB)  

    /queue simple set [find comment="bwRX"] name=($rxtaB)
    /queue simple set [find comment="bwTX"] name=($txcB)

    }
     
     
     
    ADahi
    Guest
    #6
    0
    25.11.2018 14:47:00
    http://forum.mikrotik.com/t/bandwidth-test-daily/117724/1
     
     
     
    fmarais007
    Guest
    #7
    0
    09.07.2020 08:04:00
    Привет! Я наткнулся на этот скрипт, но у меня он не заработал в ROS 6.47, пришлось немного подправить, чтобы всё работало.

    :local txc  
    :local txcA  
    :local txcB  
    :local txcC  

    :local rxc  
    :local rxcA  
    :local rxcB  
    :local rxcC  

    :local rxta  
    :local rxtaA  
    :local rxtaB  
    :local rxtaC  

    :local txta  
    :local txtaA  
    :local txtaB  
    :local txtaC  

    :local sysname [/system identity get name]
    :local datetime "$[/system clock get date] $[/system clock get time]"

    :local month  
    :local day  
    :local year  
    :local hour  
    :local min  
    :local filename  
    :local result  

    :set month [:pick $datetime 0 3]
    :set day [:pick $datetime 4 6]
    :set year [:pick $datetime 7 11]
    :set hour [:pick $datetime 12 14]
    :set min [:pick $datetime 15 17]
    :set filename "$year$month$day-$hour$min-report.txt"  

    :log info "Тест скорости начат"  

    /tool bandwidth-test protocol=udp direction=both duration=15s local-udp-tx-size=1000 remote-udp-tx-size=1000 address=xxx.xxx.xxx.xxx user=YOURUSERNAME password=YOURPASSWORD do={  

    :set $txcA ($"tx-current" / 1000)  
    :set $txcB ($txcA / 1000 * 1000)  
    :set $txcC ($txcA - $txcB)  
    :set $txcB ($txcB / 1000)  
    :set $txc "$txcB.$txcC"  

    :set $rxcA ($"rx-current" / 1000)  
    :set $rxcB ($rxcA / 1000 * 1000)  
    :set $rxcC ($rxcA - $rxcB)  
    :set $rxcB ($rxcB / 1000)  
    :set $rxc "$rxcB.$rxcC"  

    :set $rxtaA ($"rx-total-average" / 1000)  
    :set $rxtaB ($rxtaA / 1000 * 1000)  
    :set $rxtaC ($rxtaA - $rxtaB)  
    :set $rxtaB ($rxtaB / 1000)  
    :set $rxta "$rxtaB.$rxtaC"  

    :set $txtaA ($"tx-total-average" / 1000)  
    :set $txtaB ($txtaA / 1000 * 1000)  
    :set $txtaC ($txtaA - $txtaB)  
    :set $txtaB ($txtaB / 1000)  
    :set $txta "$txtaB.$txtaC"  

    :set result $status  

    }  

    :log info "Тест скорости завершён"  

    /file print file=$filename  
    :delay 5  
    /file set $filename contents="$sysname  

    $datetime  



    Результат: $result  

    Сервер: xxx.xxx.xxx.xxx  



    Скорость скачка загрузки $txc Мбит/с  
    Скорость скачка скачивания $rxc Мбит/с  

    Средняя скорость загрузки $txta Мбит/с  
    Средняя скорость скачивания $rxta Мбит/с"  

    :log info "Результаты теста скорости записаны в $filename"  

    По какой-то причине при запуске скрипта вручную постоянно возникала ошибка «no such item», добавление задержки решило проблему. Иногда параметры local-udp-tx-size и remote-udp-tx-size не работают, так что можно их убрать, если нужно. В общем, надеюсь, кому-нибудь пригодится. Удачи!
     
     
     
    creatin
    Guest
    #8
    0
    10.07.2020 12:21:00
    С какого сервера ты скачиваешь тестовый файл? Как это работает?
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры