微克罗蒂克。 使用WEB服务器通过短信进行管理

大家好!

这次我决定描述一个网上似乎没有特别描述的情况,虽然有一些提示,但大部分只是对 Mikrotik 本身的代码和 wiki 进行了长时间的有条不紊的挖掘。

实际任务:通过短信实现对多个设备的控制,以打开和关闭端口为例。

有:

  1. 辅助路由器CRS317-1G-16S+
  2. Mikrotik NETMETAL 5 接入点
  3. LTE 调制解调器 R11e-LTE

让我们从这样一个事实开始:出色的 Netmetal 5 接入点板上有一个焊接的 SIM 卡连接器和一个用于安装 LTE 调制解调器的端口。 因此,对于这一点,本质上最好的调制解调器是从该点本身的操作系统(即 R11e-LTE)可用且支持的调制解调器中购买的。 接入点被拆开,所有东西都安装到位(尽管您需要知道SIM卡位于调制解调器下方,并且不拆下主板就不可能拿到它),因此检查SIM卡的功能,否则您将不得不多次拆卸接入点。

接下来,我们在外壳上钻了几个孔,安装了 2 个尾纤并将末端固定到调制解调器上。 不幸的是,整个过程的照片没有保存下来。 另一方面,带有磁性底座的通用天线被固定在辫子上。

除了一些小的交互间隙之外,主要的设置步骤在互联网上都有很好的描述。 例如,当收到 5 条 SMS 消息并挂在收件箱中时,调制解调器就会停止接收 SMS 消息;清除消息并重新启动调制解调器并不总能解决问题。 但在6.44.1版本中,接收工作更加稳定。 收件箱显示最近4条短信,其余自动删除,不干扰生活。

该实验的主要目标是关闭和打开同一物理网络上两个路由器上的接口。 主要困难是 Mikrotik 不支持通过 SNMP 进行管理,而只允许读取值。 因此,我不得不向另一个方向挖掘,即 Mikrotik API。

没有关于如何控制它的明确文档,因此我必须进行实验,并且此说明是为将来的尝试而制定的。

要管理多个设备,您需要在本地网络上有一个可访问且工作的 WEB 服务器;需要使用 Mikrotik 命令对其进行控制。

1. 在 Netmetal 5 上,您需要编写几个脚本来分别打开和关闭它

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. 在Web服务器上创建2个脚本(当然,在这种情况下系统上必须安装php):

<?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. 从 Mikrotik 论坛下载 routeros_api.class.php 并将其放置在服务器上可访问的目录中。

您需要指定要禁用/启用的接口的名称,而不是 sfp-sfpplus16。

现在,当向表单中的号码发送消息时

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

NETMETAL 将启动相应的脚本,该脚本又将在 WEB 服务器上执行命令。

接收短信时的操作速度是几分之一秒。 工作稳定。

此外,Zabbix 监控系统还具有向手机发送 SMS 的功能,并在光学器件出现故障时打开备用互联网连接。 也许这超出了本文的范围,但我马上说,发送短信时,它们的长度应该符合一条消息的标准大小,因为…… Mikrotik不会将它们分成几部分,当长消息到达时,它根本不发送它,此外,您需要过滤消息中传输的字符,否则短信将不会发送。

来源: habr.com

添加评论