System/Scheduler
Novo
Start Date: Jan/01/1970
Start Time: 00:00:00
Interval: 00:10:00 (A cada 10 minutos, mude como precisa)
On Event: /system script run <Nome que vc salvou o script)
Versão Imprimível
Isso ai que vc colocou funciona ele execulta a script,mas a script não esta funcionando,pelo menos aqui.
Eu uso a versão 3.13 na MK e aqui ela não funcionou não tinha um cliente que estava com o ack a 148 e a script não derrubou ele não,derrubei ele manualmente e ele voltou a 30,se alguem fez funcionar nessa versão 3.13 por favor poste ai.
Tenho mk 3.1.5 e funcionando perfeito...
Eu crei 2 scripts e 2 schedulers, 1 pra cada WLAN que tem cliente conectado, ex: block_ack_w1, block_ack_w2, supondo que tenho clientes na WLAN1 e WLAN2.
Modifique global ack, coloque o valor maximo que quer deixar..
:global interf "wlan1"; coloque a interface que tem clientes pendurados.
Script:
Citação:
# Defina abaixo o valor mínimo de ACK
:global ack 50;
# Defina abaixo 1 para bloquear e 0 para não bloquear o cliente que estiver acima do valor mínimo
:global block 0;
# Defina abaixo 1 para dropar e 0 para não dropar o cliente que estiver acima do valor mínimo
:global drop 1;
# Defina abaixo a Interface
:global interf "wlan1";
# =============================================================================
# ATENÇÃO ! SO FAÇA ALTERAÇÕES ABAIXO, SE TIVER CERTEZA DO QUE ESTA FAZENDO
# =============================================================================
:global total 0;
:global mac "";
:global cliente "";
:log info "Listando Clientes com ACK acima de $ack ms:";
:foreach i in=[/interface wireless registration-table find interface=$interf] do={
:if ([/interface wireless registration-table get $i ack-timeout] > $ack) do={
:log info ("COMENTARIO: " . [/interface wireless registration-table get $i comment] . " - MAC: " . [/interface wireless registration-table get $i mac-address] . " - ACK: " . [/interface wireless registration-table get $i ack-timeout]);
:set mac [/interface wireless registration-table get $i mac-address];
:set cliente [/interface wireless access-list find mac-address=$mac];
:if ($block = 1) do={
/interface wireless access-list disable $cliente;
};
:if ($drop = 1) do={
/interface wireless registration-table remove $i;
};
:set total total+1;
};
};
:if ($total = 0) do={
:log info "Parabéns ! Nenhum Cliente com ACK acima de $ack ms encontrado.";
};