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

Я хочу сравнить значение байтов (tx-bytes,rx-bytes), загруженное пользователем, например, с моим шаблоном (100MiB, 50MiB), но я не могу написать скрипт для решения этой проблемы, как я могу это сделать?

место, где я хочу написать сценарий для этого: / интерфейс беспроводной регистрационной таблицы> значение байтов tx-rx (изображение этого места)

1 ответ

Решение

Как вы утверждаете, вы можете запросить регистрационную таблицу, используя / интерфейс беспроводной регистрационной таблицы. Помещение этого в цикл сценариев дает

:foreach wirelessClient in [/interface wireless registration-table find true] do={}

затем, в этом цикле foreach, получить статистику каждого клиента, используя идентификатор (пример здесь с полями "mac-address" и "bytes")

:local macAddress [/interface wireless registration-table get [ find .id=$wirelessClient ] value-name=mac-address];
:local bytes [/interface wireless registration-table get [ find .id=$wirelessClient ] value-name=bytes];

Возвращенные данные в "байтах" имеют формат "RX,TX" (т. Е. "545124,25422"). Таким образом, вы должны сделать небольшой трюк для извлечения строки RX: ищите символ "," и извлекайте строку перед запятой.

:local posComma [ :find $bytes "," -1]
:local RXbytes [:pick $bytes 0 $posComma]

Затем легко проверить, загрузил ли этот клиент более 50 миллионов

  :local status "Below 50M";
  :if ($RXbytes > 50000000) do={ 
    :set $status "Above 50M"
  }
  :put "Client: $macAddress $bytes $RXbytes -> $status";

Сложите все вместе в сценарий и выполните его, вы получите что-то вроде

[foo@bar] > import test.rsc 
Client: D4:CA:6D:B2:AE:EF 202134,92985 202134 -> Below 50M
Client: 48:9D:24:64:E6:08 8057465,2022134 8057465 -> Below 50M
Client: 2C:56:DC:32:09:F0 3282973,888408 3282973 -> Below 50M
Client: 48:59:29:F6:DF:5D 139664,248984 139664 -> Below 50M
Client: A4:5E:60:EB:AE:33 159890028,12433385 159890028 -> Above 50M

Полное руководство по написанию скриптов Mikrotik можно найти по http://wiki.mikrotik.com/wiki/Manual:Scripting

Другие вопросы по тегам