Scripts Mikrotik | 2 esenciales para un sys admin: Ether state and Speedtest

2 Scripts que yo denomino “Criminales”

Hola amigos,  disculpen la ausencia, estamos con muchas implementaciones, pero no queria dejar pasar esta oportunidad de dejarles 2 script que trabajan de la mano y para mi gusto son increibles.

Script 1: Chequear el estado de un puerto ethernet

Este script esta pendiente del estado de un puerto de red que le configuremos. Es decir que esta atento a si el estado del puerto esa con link o sin link. Cuando el puerto hace link chequea que tenga salida a internet haciendo un ping a www.tech-nico.com.
Si tiene salida a internet, entonces ahi entra en juego el script nro 2.

[PHP]
# Nicolas: Tech-nico.com/blog
# CHEQUEAMOS ESTADO DE ETHERNET
:global etherNET;
:set $etherNET value=”ether1″;
:global “ether-state”;
:global “ether-laststate”;
/interface ethernet monitor $etherNET once do={:set “ether-state” $status};
:if ($”ether-state” != $”ether-laststate”) do={
:log info (“Interface $etherNET – link status cambio a: ” . $”ether-state”);
:set “ether-laststate” $”ether-state”;
:do {
:put [:resolve www.tech-nico.com];
:if ($”ether-state”=”link-ok”) do { :log warning (“HACER TEST!!”); /system script run speedtest; }
} on-error={ :put “resolver failed”};
}
[/PHP]

Script 2: Hacer un test de velocidad descargando un archivo

En principio enciende la pantalla LCD del equipo (tenemos que usar algún equipo como un RB-2011) para mostrar la velocidad de download reflejada en la pantalla. Fíjense que tienen que editar la url donde dice archivo_pesado.tif y setear el servidor y nombre de archivo que ustedes tengan, y usen como prueba. Se recomienda algún video AVI pesado, (algo que pueda almacenar nuestro RB).

[PHP]
{
# Nicolas: Tech-nico.com/blog
# HACEMOS UN SPEEDTEST
/lcd backlight state=on;
local startTime [/system clock get time];
:global myurl “http://www.tech-nico.com/archivo_pesado.tif”;
/tool fetch url=$myurl mode=http;
local endTime [/system clock get time];
# subtract startTime from endTime to get time elapsed
local finalTime ( $endTime – $startTime );
# convert hours to seconds, add to sum
:local sum ( $sum + ( [ :pick $finalTime 0 2 ] * 60 * 60 ));
# convert minutes to seconds, add to sum
:set sum ( $sum + ( [ :pick $finalTime 3 5 ] * 60 ));
# add seconds to sum
:set sum ( $sum + [ :pick $finalTime 6 8 ] );
:local sise [[/file get [/file find name=archivo_pesado.tif] size] /1024];
:local sdonspped ((($sise / $sum ) * 8 ) /1024);
:local ddow ((($sdonspped *1000) /8) / 1024);
:global speedtest $sdonspped;
:log warning (“My connection Speed “.[:pick $sdonspped 0 1] .”.”. [:pick $sdonspped 1 3] . ” Mbps” );
:log error (“My Speed Download = “. $ddow .” Kbps”);
}
[/PHP]

Casos de uso

La idea de estos 2 script es la siguiente:  Crear una herramienta para mostrarle al cliente “sin encender ninguna computadora”, cual es el rendimiento de su conexion a internet. Por eso es un requisito fundamental usarlo con modelos de hardward que tengan pantalla LCD. Tambien porque en el mercado no existe ningun tester o appliance que haga algo tan basico como un testspeed y lo entregue de manera elegante en una pantallita LCD, Sin paracticamente configurar nada. Loco no?

Funcionamiento

En mi caso tengo configurado un usuario PPPoE en el ether1. El mismo puerto esta seteado en el Script 1 para chequear el estado de red. Una vez que es detectado el estado del ethernet como UP, hacemos un ping, y si el PPPoE client alcanzo a conectar, el ping a tech-nico.com nos va a dar OK, con lo cual finalmente se va a ejecutar el download.

Pd: Aclaro que la foto fue “gestionada” con google. Aclaro por si aparece el dueñ0.  😀

____________________
Primero en tech-nico.com/blog

2 Comentarios

Deja un comentario