+ Responder ao Tópico



  1. #41

    Padrão

    no caso do ap2000 nao tem.. pois chipset prism nao usa ack ... usa outro sistema de temporização..

    cartoes do tipo SENAO (com chipset prism) ... orinoco.. sao recomendados para este tipo de uso.. mto cliente pendurado... etc etc ambiente com mto ruido..

  2. #42

    Padrão

    Alexandre, onde coloco essas regras?

    Citação Postado originalmente por alexandrecorrea Ver Post
    contribuindo mais... fiz uma alteração...

    voce pode definir.. se vai apenas DROPAR o cliente, forçando uma reconexão. em alguns casos.. o cliente volta com ack baixo

    Código :
    # Defina abaixo o valor mínimo de ACK
    :global ack 30;
    # 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.";
    };

  3. #43

    Padrão

    nos scripts do mikrotik

    system > scripts

  4. #44

    Padrão

    Tem como fazer parte do processo manualmente?

    Digo, apenas derrubar o cliente sabendo o mac dele?


    Talvez algo assim:

    /interface wireless registration-table remove ___________

    Agora o que iria após esse REMOVE..
    Prevendo-se a versão 2.9.xxx

    Atualmente fizemos manualmente copiando o cliente para o AccessList, e editando ele (Desmarcando e marcando) o Autentication em 2 processos manuais.

    é a unica maneira encontrada.

  5. #45

    Padrão

    primeiramente gostaria de agradecer a colaboração dos amigos..
    o script ficou realmente muito bom!

    eu utilizo a versão 2.9.27 aqui, e pelo que vi a função de DROPAR, nao funciona nela, estou correto?

    se é isso mesmo, qual alteração no script poderia fazer pra ele 'liberar' os macs 'bloqueados' quando rodou o script?!


    novamente vcs estao de parabens...otimo script que ajudará muitos aqui!

    abraços!

  6. #46

    Padrão

    bom, respondendo a minha propria pergunta...eu fiz e funcionou aqui!!

    ele da um 'disable' no cliente e logo ja da um 'enable' em seguida...
    suficiente pra pessoa reconectar e abaixar o ack!

    novamente, agradeço o desenvolvimento desse script e eta ai a minha pequena mudança:

    Código :
    # Defina abaixo o valor mínimo de ACK
    :global ack 39;
    # 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 "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={
        :set mac [/interface wireless registration-table get $i mac-address];
        :set cliente [/interface wireless access-list find mac-address=$mac];
        :log info ("COMENTARIO: " . [/interface wireless access-list get $cliente comment] . " - MAC: " . [/interface wireless registration-table get $i mac-address] . " - ACK: " . [/interface wireless registration-table get $i ack-timeout]);
        :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 ("Nenhum Cliente com ACK acima de " . $ack . " ms encontrado.");
    } else {
      :if ($intdis = 1) do={
        /interface wireless disable $interf;
        /interface wireless enable $interf;
      };
    };

  7. #47

    Padrão

    Como ficaria um script para desconectar um cliente com ip "0.0.0.0"

    Estou com este problema aqui, o cliente conecta mas nao fica com o ip (nao uso dhcp), quando desconecto o cliente, ele volta com ip correto.

  8. #48

    Padrão

    Citação Postado originalmente por netosdr Ver Post
    Como ficaria um script para desconectar um cliente com ip "0.0.0.0"

    Estou com este problema aqui, o cliente conecta mas nao fica com o ip (nao uso dhcp), quando desconecto o cliente, ele volta com ip correto.

    essa pergunta ja eh pros grandes...mas nao foge dessa regra ai nao...

    tem que ver como que captura o LAST IP do Registration e se for igual a 0.0.0.0 ele faz os comandos que precisa.

  9. #49

    Padrão

    Eu tentei por aquele script alterando ele mas não tenho experiência...

  10. #50

    Padrão

    Citação Postado originalmente por youngrp Ver Post
    Olá Pessoal,

    Segue abaixo o script para RouterOS 2.9.x ou inferior:

    Código :
    # Defina abaixo o valor mínimo de ACK
    :global ack 30;
    # 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 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 "AP-Master";
     
    # =============================================================================
    # 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={
        :set mac [/interface wireless registration-table get $i mac-address];
        :set cliente [/interface wireless access-list find mac-address=$mac];
        :log info ("COMENTARIO: " . [/interface wireless access-list get $cliente comment] . " - MAC: " . [/interface wireless registration-table get $i mac-address] . " - ACK: " . [/interface wireless registration-table get $i ack-timeout]);
        :if ($block = 1) do={
          /interface wireless access-list disable $cliente;
        };
        :set total total+1;
      };
    };
    :if ($total = 0) do={
      :log info ("Nenhum Cliente com ACK acima de " . $ack . " ms encontrado.");
    } else {
      :if ($intdis = 1) do={
        /interface wireless disable $interf;
        /interface wireless enable $interf;
      };
    };
    Obs.: Infelizmente nesta versão não é possível derrubar o cliente sem ter que derrubar todos os outros, sendo assim use a função por sua conta e risco.

    Abraços.
    Colega, como ficaria esse script para gerar um arquivo.txt em files dos histórios de clientes com ack alto, bem como envio por email do mesmo.

  11. #51

    Padrão

    E é possivel gerar esta listagem em html... eu vi em outro topico um amigo comentando que fez um script para isso, mas ainda nao disponibilizou...

  12. #52

    Padrão

    Citação Postado originalmente por alexandrecorrea Ver Post
    contribuindo mais... fiz uma alteração...

    voce pode definir.. se vai apenas DROPAR o cliente, forçando uma reconexão. em alguns casos.. o cliente volta com ack baixo

    Código :
    # Defina abaixo o valor mínimo de ACK
    :global ack 30;
    # 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.";
    };
    Entao onde tem ali global interface=wan1
    como eu tenho 2 interfaçe ficaria
    global interface=morro
    global interface=praia

    ??? seria isso?

  13. #53

    Padrão

    voce vai precisar duplicar o script .. 1 pra cada interface

  14. #54

    Padrão

    Citação Postado originalmente por alexandrecorrea Ver Post
    voce vai precisar duplicar o script .. 1 pra cada interface
    Pow cara valeu pela resposta, rapida ainda bem que a under tem caras como vc!! :P

  15. #55

    Padrão

    Citação Postado originalmente por alexandrecorrea Ver Post
    voce vai precisar duplicar o script .. 1 pra cada interface
    Coloco na guia source, em script ,desabilito todos os itens em Policy? so recorto e colo e mudo nome da interfaçe?

    Nao tinha visto ainda esse item, no meu caso ap bridge funfa tb ?

  16. #56
    danielmenezes
    Visitante

    Padrão

    Citação Postado originalmente por diox Ver Post
    Coloco na guia source, em script ,desabilito todos os itens em Policy? so recorto e colo e mudo nome da interfaçe?

    Nao tinha visto ainda esse item, no meu caso ap bridge funfa tb ?
    funciona tb!

    desabilita so o reboot e o password.

  17. #57
    danielmenezes
    Visitante

    Padrão -- pegando pesado!! hehe

    será que conseguimos enviar o resultado do LOG, caso alguém seja desconectado, para um destinatário de e-mail??

    vou tentando aqui, mas se alguém souber, agradeço!

  18. #58

    Padrão

    amigos, saem o comando para por no script pra quando ele desabilitar o cliente, ele espera uns 4 segundos e roda o enable?

    pois na versão 3.00 não consegui rodar, ele desabilita e nao habilita novamente.

    obrigado

  19. #59

    Padrão

    aki na rb versão 3.10 funcionou porem ele nao execulta automaticamente eu tenho que coloca para rodar manualmente.
    nao sei se he por causa da versão .
    Última edição por 14735; 04-10-2008 às 09:52.

  20. #60

    Padrão

    de quanto em quanto tempo esse script esta marcado para rodar ?
    tem como mudar esse tempo ?