+ Responder ao Tópico



  1. #1

    Question Script em rotina apos x consumo - Mikrotikt

    Prezados,

    Existe alguma maneira de quando chegar a ex: 90Mb no RX da interface do mikrotikt(1), ele altere uma regra no Mangle (in. Interface)(2) ? O numero do Mangle é "10"


    Clique na imagem para uma versão maior

Nome:	         sss.png
Visualizações:	155
Tamanho: 	38,0 KB
ID:      	59578

    Não sei nem como procurar isso no Pai dos Burros.

    Grato pela atenção.

  2. #2

    Padrão Re: Script em rotina apos x consumo - Mikrotikt

    Boa noite @brito666

    Achei a pergunta interessante e fui da uma pesquisada sobre o assunto.
    Nós temos a ferramenta Traffic Monitor, mas isso é para medir a velocidade e executar algum comando.
    Pela rápida pesquisa que fiz, não achei nada pronto no MK para isso, então a solução seria com script, fui meter a mão pra testar e ta ai o resultado.


    SCRIPT PARA RESETAR A BAGAÇA:
    Código :
    :global lastRX;:set $lastRX 0;
    Você usara isso quando for mudar para monitorar outra interface, pois o rx-bytes (quantidade de trafego passado) vai ser diferente. Para não dar erro, tem que resetar a variavel $lastRX.

    SCRIPT DE PROBE (QUE APALISA SE O TRAFEGO CHEGOU NO LIMITE DESEJADO):
    Código :
    :local trafficLimit 10485760;
    :local interface "ether1";
    :local scriptToExecute "scriptRxReached";
     
     
    ##########################
    :global lastRX
     
     
    :if ($lastRX = nil) do={
      :set lastRX 0;
    }
     
     
    :local RX [interface get [find name=$interface] rx-byte]
    :local traffic ($RX - $lastRX)
     
     
    #log info "$RX RX"
    #log info "$traffic TRAFFIC"
     
     
    :local disp;
    if ($traffic >= 1048576) do={
      :local mb ($traffic / 1048576);
      :local kb (($traffic - ($mb * 1048576)) / 1024);
      :set disp "$mb.$kb Mb";
    } else={
      :if ($traffic >= 1024) do={
        :local kb ($traffic / 1024);
        :set disp "$kb Kb";
      } else={
        :set disp ($traffic);
      }
    }
     
     
    :if ($traffic >= $trafficLimit) do={
      log info "$disp";
      :set lastRX $RX;
     
     
      /system script run [find name=$scriptToExecute];
    }
    Você só precisa mudar as primeiras três variáveis. $trafficLimit é o trafego, em bytes, que você deseja como limite, $interface é o nome da interface que você quer monitorar e $scriptToExecute é o nome do script que você quer que seja executado quando o trafego chegar àquele limite definido em $trafficLimit.

    Você só precisa criar uma tarefa em System->Scheduler com o intervalo que você desejar, digamos 10 segundos, chamando o script de PROBE. Depois disso altera ali o $trafficLimit logo no inicio para 94371840 (que é 90Mb, em bytes), e cria um script com o nome scriptRxReached onde ficara o script que você quer executar a cada vez que a interface indicada na variavel $interface (logo no inicio) trafegar a quantidade de bytes indicada.

  3. #3

    Padrão Re: Script em rotina apos x consumo - Mikrotikt

    Fazendo uma simulação aqui referente ao seu caso em específico, eu criei um script chamado scriptRxReached, e na minha regra de mangle que queria mudar, eu coloquei um comentário nela, para identificação, "THIS RULE" por exemplo.

    No script scriptRxReached, fiz assim:
    Código :
    :local interface1 "ether10";
    :local interface2 "ether11";
     
     
    :local mangleComment "THIS RULE";
     
     
    ##########################
     
     
    :local int [/ip firewall mangle get [find comment=$mangleComment] in-interface];
     
     
    :if ($int = $interface1) do={
      /ip firewall mangle set [find comment=$mangleComment] in-interface=$interface2;
    } else={
      /ip firewall mangle set [find comment=$mangleComment] in-interface=$interface1;
    }

    Esse script vai pegar a regra de mangle com o comentário "THIS RULE", e vai fazer ela ficar alternando entre as interfaces definidas nas variaveis $interface1 e $interface2.

  4. #4

    Padrão Re: Script em rotina apos x consumo - Mikrotikt

    inquiery

    Obrigado, irei estudar este script no qual você teve o trabalho de elaborar (Em pleno domingo rs).
    A necessidade desta função surgiu pelo seguinte motivo, tenho 2 links, e mesmo como load balance chega um certo momento que somente 1 link fica saturado, e chegando nos 90MB, automaticamente o "PORT3_LAN" será alterado para "PORT4_LAN" , logo o tráfego será direcionado para o 2º link aliviando o PORT3.

    (Ideia meia gambiarra né? kkk mas....)