Script para verificar ACK - nova versão
por
em 20-11-2009 às 01:20 (38642 Visualizações)
Caros,
Resolvi desenvolver novamente um script para controlar o ACK nas interfaces wireless, veja o que mudou:
- Codigo totalmente reescrito.
- Script varre TODAS as interfaces do AP que estão em modo ap-bridge, não sendo mais necessário criar um script para cada interface.
- Permite desconectar ou apenas listar no log os clientes que estão acima do ACK limite.
- Testado nas versões 3.25 até 3.30 e funcionou EM TODAS !!!! provavelmente funciona em todas as versões 3.X
Para instalar, basta ir em SYSTEM -> SCRIPTS e criar um novo script com o código !! Por padrão, o script não vai derrubar os clientes, execute assim para ver se o resultado é o esperado, depois altere a configuração a seu gosto.
Depois crie um SCHEDULE para executar automaticamente !!
Sugestões ? postem nos comentários !!
codigo do script (também anexado no post arquivo com o código)
Código :#Script ACK-Check v0.1 # #Lista as estacoes que estao com ACK acima do limite com opcao para desconecta-las # # Autor: Alexandre Jeronimo Correa <[email protected]> # 20/11/2009 - 01:03am # #Instrucoes de uso: # -- Adicionar o codigo completo em SYSTEM >> SCRIPTS # -- Por padrao o script nao vai derrubar nenhuma estacao, rode o script padrao antes de # configurar a variavel cut para 1, tendo certeza que o script esta OK. # -- O script pode ser executado pelo botao "run script" ou via linha de comando. # "/ system script run <nome do script> # -- O script so funciona em interfaces que o modo de operacao seja AP-BRIDGE # -- Testado nas versoes 3.25 até 3.30 # #Informacoes: # #Variavel ack -> deve ter o valor do ack MAXIMO permitido. #Variavel cut -> deve ser 0 ou 1, 0 somente mostra, 1 mostra e desconecta a estacao. ################################################################## #Configuracoes das variaveis :local ack 50; :local cut 0; ############ Script - NAO ALTERAR ##################################### :local mac ""; :local uack ""; :local removido ""; :log warning ("[ackchk] Procurando clientes com ACK maior que " . $ack); #pega a lista de interfaces AP wireless ativas, e que tenham ack dinamico :foreach i in=[ / interface wireless find mode="ap-bridge" ack-timeout="dynamic" running] do={ :local intname [ / interface wireless get $i name ]; :log warning (" Interface: " . $intname); :foreach x in=[/interface wireless registration-table find interface=$intname] do={ :set uack [/interface wireless registration-table get $x ack-timeout]; :set removido ""; :if ($uack > $ack) do={ :set mac [ / interface wireless registration-table get $x mac-address]; :if ($cut = 1) do= { :set removido " removido..."; / interface wireless registration-table remove $x; }; :log warning (" mac: " . $mac . "@" . $intname . " [" . $uack . "]" . $removido); }; }; }; ############ FIM #####################################
Comentários
+ Enviar Comentário