acabei de implementar o script em minha torre com mkt.
alexandre, esse script é show de bola.
como aqui eu tenho ip x mac e nao tinha os macs em "access list" tive que colocar todos em access-list, demorou uns 30 minutos mas valeu a pena.
implementei apenas uns detalhes a mais, como pegar o ip na tabela ARP, para pode facilitar na hora de identificar (pingar) o ip problemático.
segue modificação:
Código :
# Defina abaixo o valor mínimo de ACK :global ack 91; # Defina abaixo 1 para bloquear e 0 para não bloquear o cliente que estiver acima do valor mínimo :global block 1; # Defina abaixo 1 para reiniciar a Interface quando um cliente estiver acima do valor mínimo e 0 para não fazer nada # Obs.: Ative apenas no último dos casos, pois derruba todos clientes enlaçados na Interface :global intdis 0; # Defina abaixo a Interface :global interf "wlan2_norte"; :global interf2 "NORTE"; #------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :global total 0; :global mac ""; :global cliente ""; :global ip ""; :log info ("-----------------------------------------------------------------------------------------"); :log info ($interf2 . " --> LISTANDO CLIENTES COM ACK ACIMA DE " . $ack . " us:"); :foreach i in=[/interface wireless registration-table find interface=$interf] do={ :if ([/interface wireless registration-table get $i ack-timeout] > $ack) do={ :set mac [/interface wireless registration-table get $i mac-address]; :set cliente [/interface wireless access-list find mac-address=$mac]; :set ip [/ip arp get [/ip arp find mac-address=$mac] address ]; :log info ($interf2 . " --> MAC: " . $mac . " -- ACK " . [/interface wireless registration-table get $i ack-timeout] . " -- IP " . $ip); :if ($block = 1) do={ /interface wireless access-list disable $cliente; /interface wireless access-list enable $cliente; }; :set total total+1; }; }; :if ($total = 0) do={ :log info ($interf2 . " --> NENHUM CLIENTE COM ACK ACIMA DE " . $ack . " us ENCONTRADO."); } else { :if ($intdis = 1) do={ /interface wireless disable $interf; /interface wireless enable $interf; }; }; :log info ("-----------------------------------------------------------------------------------------");
valew,