2016-04-15 12 views
0

私のパターン(例えば、100MiB、50MiB)を使ってユーザがダウンロードしたバイト値(tx-bytes、rx-bytes)を比較したいのですが、これを解決するためのスクリプトを書くことはできませんそれをしてもいいですか ?バイト値mikrotikの比較スクリプト

私はそのためのスクリプトを書きたい場所は次のとおりです。/インターフェースワイヤレス登録・テーブル> TX-RXバイト値 (an image of this Place)

答えて

1

あなたが状態として、あなたは/インターフェース無線登録テーブルを使用して登録表を照会することができます。スクリプトのループ上でこれを置くことは

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

を与え、その後、このforeachループでは、IDを使用して、各クライアントの統計情報を取得(「MACアドレス」と、ここでの例と「バイト」フィールド)

: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"; 

は、スクリプトで一緒にすべて入れてダウンロードしたかどうかをチェックし、実行するのは簡単です

[[email protected]] > 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

+0

あなたの助けてくれてありがとう、私を救った – neviseh70