+ Responder ao Tópico



  1. #49

    Padrão

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

  2. #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.



  3. #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...

  4. #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?



  5. #53

    Padrão

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

  6. #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