Как получить скриптом обьем скачанного в очереди?

Тема в разделе "Скрипты", создана пользователем Welk, 21 фев 2018.

  1. Welk

    Welk Новый участник

    Доброго дня!

    Пробовал сделать скрипт, урезающий скорость в simple queue , но возникла внезапная проблема,
    похоже, что немного изменился синтаксис.
    Брал идею тут https://wiki.mikrotik.com/wiki/Limiting_a_user_to_a_given_amount_of_traffic_II
    но вот это
    Код:
     :set traf [get [find target-addresses=("192.168.1." . $i)] total-bytes]
    не работает
    во-первых ругается на target-addresses, при этом понимает просто target= , ну и, похоже, что такое total-bytes тоже не знает. Конструкция
    Код:
    :set traf [get [find target=("192.168.1." . $i)] total-bytes]  
    всегда выдает нули
    Вообщем, прошу помощи гуру ...
     

  2. global z [/queue simple get [find target="192.168.21.0/24"] bytes]
    вот так работает, только если нули в это поле получите
    no such item
     
  3. amv

    amv Участник

    не работает в поле есть показатели но пишет no such item 6.41.1
     
  4. у меня ок 6.41.2 пример во вложении
     

    Вложения:

  5. amv

    amv Участник

    как то так
     

    Вложения:

    • 123.jpg
      123.jpg
      Размер файла:
      68 КБ
      Просмотров:
      7
    Последнее редактирование: 27 фев 2018
  6. /32 нужно
     
  7. amv

    amv Участник

    Точняг =) пропустил, работает.
     
  8. amv

    amv Участник

    Код:
    :local traf;
    /queue simple
      :for i from=1 to= 254 do=  {
        :if ([/queue simple find target=("192.168.1.$i/32")] != "") do={
          :set traf [get [find target=("192.168.1.$i/32")] total-bytes]
          :if ($traf  > 1048) do= {
            set [find target=("192.168.1.$i/32")] max-limit= 64000/64000
          }
        }
      }
    попробуй так
     
  9. Welk

    Welk Новый участник

    Всем спасибо, на днях попробую, сейчас завалили другой работой, не до подсчета трафика пока что ...
     
  10. Welk

    Welk Новый участник

    Да, bytes работает, но выдает дробное число, придется его парсить ...
     
  11. Welk

    Welk Новый участник

    заработало ... если кому интересно, могу скинуть текст
     
  12. amv

    amv Участник

    bytes и total-butes разные вещи
    Если распарсил кидай тут мож кому пригодится.
     
  13. Мышаня

    Мышаня Участник

    Welk кидай, ага
     
  14. Welk

    Welk Новый участник

    Ну как-то так:

    Код:
    :local traffic;
    :local ipaddr;
    /queue simple
    :log info "script started"
    :for i from=60 to=100 do= {
    :set ipaddr [("192.168.4.$i/32")];
    :if ([find target=$ipaddr] != "") do= {
    :set traffic [get [find target=$ipaddr] bytes];
    :local posSlash [:find $traffic "/" -1]
    :local trafficlen [:len $traffic]
    # :local UpTraff [:pick $traffic 0 $posSlash];
    # :local UpTrafflen [:len $UpTraff]
    :local DownTraff [:pick $traffic ($posSlash+1) $trafficlen]
      :if ($DownTraff  > 524288000) do= {
        set [find (target=$ipaddr)] limit-at=32k/64k max-limit=32k/64k;
       }
    }
    }
    То что в колонках винбокса в очереди называется "total downloaded bytes" и "total uploaded bytes"
    в свойствах самой очереди называется просто "bytes" , а параметр total bytes, похоже, относится к другому и всегда у меня показывает нули. Вот зачем такую путаницу придумали, непонятно :)
     
    Последнее редактирование: 6 мар 2018
    Денис Друженков, amv и Мышаня нравится это.
  15. amv

    amv Участник

    Смените на нужный параметр вам и будет считаться total-bytes
     

    Вложения:

    • 11.png
      11.png
      Размер файла:
      56,6 КБ
      Просмотров:
      10
  16. Welk

    Welk Новый участник

    С типами простой очереди пока не разбирался, спасибо за наводку