/system script
add name=CONTROLE_ACK policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive source="#Script ACK-Check v0.1\r\
\n#\r\
\n#Lista as estacoes que estao com ACK acima do limite com opcao para desconecta-las\r\
\n#\r\
\n# Autor: Alexandre Jeronimo Correa <[email protected]>\r\
\n# 20/11/2009 - 01:03am\r\
\n#\r\
\n#Instrucoes de uso:\r\
\n# -- Adicionar o codigo completo em SYSTEM >> SCRIPTS\r\
\n# -- Por padrao o script nao vai derrubar nenhuma estacao, rode o script padrao antes de\r\
\n# configurar a variavel cut para 1, tendo certeza que o script esta OK.\r\
\n# -- O script pode ser executado pelo botao \"run script\" ou via linha de comando.\r\
\n# \"/ system script run <nome do script>\r\
\n# -- O script so funciona em interfaces que o modo de operacao seja AP-BRIDGE\r\
\n# -- Testado nas versoes 3.25 at\E9 3.30\r\
\n#\r\
\n#Informacoes:\r\
\n#\r\
\n#Variavel ack -> deve ter o valor do ack MAXIMO permitido.\r\
\n#Variavel cut -> deve ser 0 ou 1, 0 somente mostra, 1 mostra e desconecta a estacao.\r\
\n##################################################################\r\
\n#Configuracoes das variaveis\r\
\n:local ack 50;\r\
\n:local cut 0;\r\
\n\r\
\n############ Script - NAO ALTERAR #####################################\r\
\n:local mac \"\";\r\
\n:local uack \"\";\r\
\n:local removido \"\";\r\
\n:log warning (\"[ackchk] Procurando clientes com ACK maior que \" . \$ack);\r\
\n#pega a lista de interfaces AP wireless ativas, e que tenham ack dinamico\r\
\n:foreach i in=[ / interface wireless find mode=\"ap-bridge\" ack-timeout=\"dynamic\" running] do={\r\
\n :local intname [ / interface wireless get \$i name ];\r\
\n :log warning (\" Interface: \" . \$intname);\r\
\n :foreach x in=[/interface wireless registration-table find interface=\$intname] do={\r\
\n :set uack [/interface wireless registration-table get \$x ack-timeout];\r\
\n :set removido \"\";\r\
\n :if (\$uack > \$ack) do={\r\
\n :set mac [ / interface wireless registration-table get \$x mac-address]; \r\
\n :if (\$cut = 1) do= {\r\
\n :set removido \" removido...\";\r\
\n / interface wireless registration-table remove \$x;\r\
\n };\r\
\n :log warning (\" mac: \" . \$mac . \"@\" . \$intname . \" [\" . \$uack . \"]\" . \$removido);\r\
\n }; \r\
\n };\r\
\n};\r\
\n############ FIM #####################################"
/system scheduler
add comment="" disabled=no interval=50s name=CONTROLE_ACK on-event=CONTROLE_ACK start-time=startup