Buen dia a todos!
Esta vez decidí describir la situación, que parece no estar particularmente descrita en Internet, aunque hay algunos indicios, pero la mayor parte se debió a una larga excavación metódica del código y la wiki de Mikrotik.
En realidad, la tarea: implementar usando el control de SMS de varios dispositivos, en el ejemplo de activar y desactivar puertos.
Hay:
- Enrutador menor CRS317-1G-16S +
- Punto de acceso Mikrotik NETMETAL 5
- Módem LTE R11e-LTE
Para empezar, el maravilloso punto de acceso Netmetal 5 tiene a bordo un conector soldado para una tarjeta SIM y un puerto para instalar un módem LTE. Por lo tanto, para este punto, de hecho, el mejor módem se compró de lo que estaba disponible y era compatible con el sistema operativo del punto en sí, es decir, R11e-LTE. El punto se desarmó, todo se colocó en su lugar (aunque debe saber que la tarjeta SIM se encuentra debajo del módem y no es posible obtenerla sin quitar la placa principal), por lo que debe verificar el funcionamiento de la tarjeta SIM, de lo contrario tendrá que desmontar el punto de acceso varias veces.
Luego perforamos un par de agujeros en la caja, instalamos 2 coletas y fijamos los extremos al módem. Lamentablemente, la foto del proceso no se ha guardado. Por otro lado, se unieron antenas universales con una base magnética a las coletas.
Los principales pasos de configuración se describen bastante bien en Internet, a excepción de pequeñas jambas de interacción. Por ejemplo, el módem deja de recibir mensajes SMS cuando vienen 5 piezas y se cuelgan en la Bandeja de entrada, borrando mensajes, reiniciando el módem no siempre resuelve el problema. Pero en la versión 6.44.1, la recepción funciona de manera más estable. La bandeja de entrada muestra los últimos 4 sms, el resto se borra automáticamente y la vida no interfiere.
El objetivo principal del experimento es extinguir y aumentar las interfaces en dos enrutadores en una red física. La principal dificultad fue que Mikrotik no admite la gestión a través de SNMP, sino que solo permite la lectura de valores. Por lo tanto, tuve que cavar en la otra dirección, a saber, la API Mikrotik.
No hay documentación clara sobre cómo administrar, por lo que tuve que experimentar y esta instrucción se realizó para futuros intentos.
Para administrar múltiples dispositivos, necesita un servidor WEB accesible y funcional en la red local, es necesario administrarlo usando los comandos Mikrotik.
1. En Netmetal 5, necesita hacer un par de scripts para encender y apagar, 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, php debe estar instalado en el sistema en este caso):
<?php
<?php
3. Descargue del foro Mikrotik routeros_api.class.php y colóquelo en un directorio accesible en el servidor.
en lugar de sfp-sfpplus16, debe especificar el nombre de la interfaz desconectada / incluida.
Ahora al enviar un mensaje a un número en el formulario
:cmd script enableiface :cmd script disableiface
NETMETAL ejecutará el script correspondiente y, a su vez, ejecutará el comando en el servidor WEB.
La velocidad de las operaciones al recibir fracciones de SMS de un segundo. Funciona de manera estable.
Además, existe la funcionalidad de enviar SMS a los teléfonos mediante el sistema de monitoreo Zabbix y la apertura de una conexión de respaldo a Internet cuando la óptica cae. Quizás esto esté más allá del alcance de este artículo, pero diré de inmediato que cuando envían 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, debe filtrar los caracteres enviados a los mensajes, de lo contrario no se enviarán SMS.
PD: Estoy complementando ahora sobre las jambas en versiones anteriores de RouterOS que existían y cómo lidiar con ellas.
1. La longitud máxima del mensaje y los caracteres utilizados en los mensajes son limitados, por lo que tuve que luchar en el nivel de Zabbix, es decir, para corregir la plantilla de envío de mensajes, de modo que, en resumen, quedara claro de qué se trataba el mensaje.
Configuración - Acciones - Informe a sms - Operaciones - Asunto: Problema: {HOST.NAME} {TRIGGER.NAME}
Y en recuperación Informe a sms - Operaciones de recuperación Asunto: Resuelto: {HOST.NAME} {TRIGGER.NAME}
2. Además, el script en sí, que envía datos al módem, también corta la longitud máxima del mensaje enviado, porque Si es demasiado largo, el mensaje no se enviará.
Script PHP enviando datos
<?php require('/usr/lib/zabbix/alertscripts/routeros_api.class.php'); $API = new RouterosAPI(); $API->debug=true; if ($API->connect('IP ', ' ', ' ')) { $API->comm("/tool/sms/send", array( "port"=>"lte1", "phone-number"=>$argv[1], "message"=>$argv[2],)); } $API->disconnect(); echo $argv[1]; echo $argv[2]; ?>
3. Limpieza de la bandeja de entrada para RouterOS <6.44
System-sheduler
/system scheduler
add disabled=yes interval=1m name=removeSMS on-event="/system script run 7" \
policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \
start-date=nov/01/2018 start-time=19:32:00
Si el script a continuación tendrá un número de serie diferente, entonces en el planificador, deberá cambiar la ejecución 7 al número correspondiente
Script del sistema
/system script
add dont-require-permissions=no name=removeSMS owner=admin policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\
tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n"
Script con número de serie 7
4. En las versiones inferiores a 6.38, ayudó a reiniciar el módem también con scripts integrados y un programador
/system script
add dont-require-permissions=no name=rebootLTE owner=admin policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\
interface lte disable 0\r\
\ndelay 10\r\
\n/interface lte enable 0\r\
\n/tool sms set receive-enabled=false\r\
\ndelay 10\r\
\n/tool sms set receive-enabled=true\r\
\n"
5. Y un poco sobre la reposición de equipos. Para enviar un SMS, está permitido decir en un host con Zabbix que genere un archivo RSC, y luego enviarlo a ftp en Mikrotik con un script, luego en el módem mismo, mediante el script en el programador para ejecutar el archivo requerido, los comandos se ejecutan, pero me pareció más conveniente usar el mecanismo anterior.
En el caso de tal envío, el código generado es bastante simple.
/tool sms send lte1 +7926xxxxxxx message "Problem: High ICMP ping response time Problem started at 17:08:04 on 2018.07.10 Problem name: High ICMP ping response time Host: Netgear7212 Severity: Warning Original problem ID: 5403803"
En este ejemplo, los caracteres adicionales ya se eliminan y la longitud es ilimitada. La secuencia de comandos que procesa el lanzamiento de acuerdo con este método después de hacer ejercicio debe copiar un archivo RSC vacío dentro del archivo Mikrotik existente.
No me gustó este método, ya que, en principio, no hay protección contra fallas y son posibles los mensajes no controlados no enviados.
En la versión de RouterOS 6.44.1, los problemas de desbordamiento de los entrantes ya se han eliminado, por lo que no puede recurrir a métodos de limpieza colectiva de granjas.