Microtik. Gestión vía SMS mediante servidor WEB

Buen día a todos!

Esta vez decidí describir una situación que no parece estar particularmente descrita en Internet, aunque hay algunos indicios al respecto, pero la mayor parte fue solo una larga investigación metódica del código y la wiki de Mikrotik.

La tarea real: implementar el control de varios dispositivos mediante SMS, usando el ejemplo de activación y desactivación de puertos.

Hay:

  1. Enrutador secundario CRS317-1G-16S+
  2. Punto de acceso Mikrotik NETMETAL 5
  3. Módem LTE R11e-LTE

Para empezar, el maravilloso punto de acceso Netmetal 5 tiene a bordo un conector para tarjeta SIM soldado y un puerto para instalar un módem LTE. Por lo tanto, para este punto, se compró esencialmente el mejor módem de lo que estaba disponible y era compatible con el sistema operativo del propio punto, es decir, R11e-LTE. Se desmontó el punto de acceso, se instaló todo en su lugar (aunque debe saber que la tarjeta SIM está ubicada debajo del módem y no es posible obtenerla sin quitar la placa principal), así que verifique la funcionalidad de la tarjeta SIM. de lo contrario tendrás que desmontar el punto de acceso varias veces.

A continuación, perforamos un par de agujeros en la carcasa, instalamos 2 coletas y fijamos los extremos al módem. Desafortunadamente, no sobrevivió ninguna fotografía del proceso. Por otro lado, a los pigtails se les colocaron antenas universales con base magnética.

Los principales pasos de configuración se describen bastante bien en Internet, excepto por pequeñas lagunas en la interacción. Por ejemplo, el módem deja de recibir mensajes SMS cuando llegan 5 de ellos y se quedan colgados en la Bandeja de entrada; borrar mensajes y reiniciar el módem no siempre soluciona el problema. Pero en la versión 6.44.1 la recepción funciona de forma más estable. La bandeja de entrada muestra los últimos 4 SMS, el resto se borra automáticamente y no interfiere con la vida.

El objetivo principal del experimento es apagar y encender interfaces en dos enrutadores en la misma red física. La principal dificultad fue que Mikrotik no soporta la gestión vía SNMP, sino que sólo permite leer valores. Por lo tanto, tuve que profundizar en la otra dirección, es decir, en la API de Mikrotik.

No hay documentación clara sobre cómo controlarlo, así que tuve que experimentar y se hicieron estas instrucciones para futuros intentos.

Para administrar múltiples dispositivos, necesitará un servidor WEB accesible y que funcione en la red local; deberá controlarlo mediante comandos de Mikrotik.

1. En Netmetal 5 necesitas crear un par de scripts para activarlo y desactivarlo, respectivamente.

system script
add dont-require-permissions=no name=disableiface owner=admin policy=
    ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=
    "/tool fetch http://WEB_SERVER_IP/di.php "
add dont-require-permissions=no name=enableiface owner=admin policy=
    ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=
    "/tool fetch http://WEB_SERVER_IP/en.php "

2. Cree 2 scripts en el servidor web (por supuesto, en este caso, php debe estar instalado en el sistema):

<?php
# file en.php enable interfaces    
require('/usr/lib/zabbix/alertscripts/routeros_api.class.php');

    $API = new RouterosAPI();
    $API->debug=true;

if ($API->connect('IP управляемого Mikrotik', 'логин администратора', 'пароль администратора')) {
    $API->comm("/interface/ethernet/enable", array(
    "numbers"=>"sfp-sfpplus16",));
}
   $API->disconnect();
?>

<?php
#file di.php disable interfaces
    require('/usr/lib/zabbix/alertscripts/routeros_api.class.php');

    $API = new RouterosAPI();
    $API->debug=true;

if ($API->connect('IP управляемого Mikrotik', 'логин администратор', 'пароль администратора')) {
    $API->comm("/interface/ethernet/disable", array(
    "numbers"=>"sfp-sfpplus16",));
}
   $API->disconnect();
?>

3. Descargue routeros_api.class.php del foro de Mikrotik y colóquelo en un directorio accesible en el servidor.

En lugar de sfp-sfpplus16, debe especificar el nombre de la interfaz que se habilitará/deshabilitará.

Ahora, al enviar un mensaje a un número en el formulario

:cmd СЕКРЕТНЫЙКОД script enableiface
или
:cmd СЕКРЕТНЫЙКОД script disableiface 

NETMETAL lanzará el script correspondiente, que a su vez ejecutará el comando en el servidor WEB.

La velocidad de operaciones al recibir SMS es de una fracción de segundo. Funciona de manera estable.

Además, existe una funcionalidad para enviar SMS a teléfonos mediante el sistema de monitoreo Zabbix y abrir una conexión a Internet de respaldo si falla la óptica. Quizás esto esté más allá del alcance de este artículo, pero diré de inmediato que al enviar SMS, su longitud debe ajustarse al tamaño estándar de un mensaje, porque... Mikrotik no los divide en partes, y cuando llega un mensaje largo simplemente no lo envía, además, es necesario filtrar los caracteres transmitidos en los mensajes, de lo contrario el SMS no se enviará.

Fuente: habr.com

Añadir un comentario