字节值 mikrotik 的比较脚本

Comparison script for bytes value mikrotik

我想比较用户下载的字节值(tx-bytes,rx-bytes)和我的模式,例如(100MiB,50MiB) 但是我不能写脚本来解决这个问题,我该怎么做?

我想为此编写脚本的地方是:/interface wireless registration-table > tx-rx bytes value (an image of this Place)

正如您所说,您可以使用/接口无线注册-table查询注册table。将其放在脚本循环中可以得到

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

然后,在此 foreach 循环中,使用 id 获取每个客户端的统计信息(这里的示例使用 "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];

返回的 "bytes" 数据格式为 "RX,TX"(即“545124,25422”)。所以你必须做一些小技巧来提取 RX 字符串:查找“,”字符并提取逗号前的字符串。

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

然后,查看那个客户端是否下载超过50M就很简单了

  :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