1 Anexo(s)
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"
Anexo 59578
Não sei nem como procurar isso no Pai dos Burros.
Grato pela atençã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;
Citação:
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];
}
Citação:
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.
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.
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....)