Mikrotik. Controle via SMS usando servidor WEB

Bom dia a todos!

Desta vez decidi descrever uma situação que não parece ser particularmente descrita na Internet, embora haja algumas dicas sobre isso, mas a maior parte foi apenas uma longa escavação metódica do código e do próprio wiki do Mikrotik.

A tarefa real: implementar o controle de diversos dispositivos via SMS, usando o exemplo de ativação e desativação de portas.

Existe:

  1. Roteador secundário CRS317-1G-16S+
  2. Ponto de acesso Mikrotik NETMETAL 5
  3. Modem LTE R11e-LTE

Comecemos pelo fato de que o maravilhoso ponto de acesso Netmetal 5 possui a bordo um conector de cartão SIM soldado e uma porta para instalação de um modem LTE. Portanto, para este ponto, essencialmente o melhor modem foi adquirido entre o que estava disponível e suportado pelo sistema operacional do próprio ponto, nomeadamente o R11e-LTE. O ponto de acesso foi desmontado, tudo foi instalado em seu lugar (embora você precise saber que o cartão SIM está localizado embaixo do modem e não é possível obtê-lo sem retirar a placa principal), então verifique a funcionalidade do cartão SIM, caso contrário, você terá que desmontar o ponto de acesso várias vezes.

Em seguida, fizemos alguns furos na caixa, instalamos 2 tranças e prendemos as pontas ao modem. Infelizmente, nenhuma foto do processo sobreviveu. Por outro lado, antenas universais com base magnética foram fixadas nas tranças.

As principais etapas de configuração são muito bem descritas na Internet, exceto por pequenas lacunas de interação. Por exemplo, o modem para de receber mensagens SMS quando 5 delas chegam e elas ficam penduradas na Caixa de entrada; limpar as mensagens e reiniciar o modem nem sempre resolve o problema. Mas na versão 6.44.1 a recepção funciona de forma mais estável. A caixa de entrada exibe os últimos 4 sms, os demais são apagados automaticamente e não atrapalham a vida.

O principal objetivo do experimento é desligar e ligar interfaces em dois roteadores na mesma rede física. A principal dificuldade era que o Mikrotik não suporta gerenciamento via SNMP, mas permite apenas leitura de valores. Portanto, tive que ir em outra direção, ou seja, a API Mikrotik.

Não há documentação clara sobre como controlá-lo, então tive que experimentar e esta instrução foi feita para tentativas futuras.

Para gerenciar vários dispositivos, você precisará de um servidor WEB acessível e funcional na rede local; ele precisará ser controlado usando comandos Mikrotik.

1. No Netmetal 5 você precisa fazer alguns scripts para ligá-lo e desligá-lo, 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. Crie 2 scripts no servidor web (claro, o php deve estar instalado no sistema neste caso):

<?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. Baixe routeros_api.class.php do fórum Mikrotik e coloque-o em um diretório acessível no servidor.

Em vez de sfp-sfpplus16 você precisa especificar o nome da interface a ser desabilitada/habilitada.

Agora, ao enviar uma mensagem para um número no formato

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

O NETMETAL lançará o script correspondente, que por sua vez executará o comando no servidor WEB.

A velocidade das operações ao receber SMS é de uma fração de segundo. Funciona de forma estável.

Além disso, há funcionalidade para enviar SMS para telefones pelo sistema de monitoramento Zabbix e abrir uma conexão de backup com a Internet caso a ótica falhe. Talvez isso esteja além do escopo deste artigo, mas direi desde já que ao enviar SMS, seu comprimento deve caber no tamanho padrão de uma mensagem, porque... O Mikrotik não os divide em partes, e quando chega uma mensagem longa simplesmente não a envia, além disso, é necessário filtrar os caracteres transmitidos nas mensagens, caso contrário o SMS não será enviado.

Fonte: habr.com

Adicionar um comentário