祝大家有美好的一天!
这次,我决定描述这种情况,尽管似乎有一些提示,但似乎并没有在Internet上对其进行特别描述,但是大多数情况只是对Mikrotik本身的代码和Wiki进行了长期的有条理的挖掘。
实际上的任务是:以打开和关闭端口为例,使用多个设备的SMS控制来实现。
有:
- 小型路由器CRS317-1G-16S +
- 接入点Mikrotik NETMETAL 5
- LTE调制解调器R11e-LTE
首先,出色的Netmetal 5接入点具有一个用于SIM卡的焊接连接器和一个用于安装LTE调制解调器的端口。 因此,就这一点而言,实际上,最好的调制解调器是从该点本身的操作系统即R11e-LTE购买和支持的。 拆卸了该点,一切都设置到位(尽管您需要知道SIM卡位于调制解调器下面,并且如果不卸下主板就无法获取它),因此请检查SIM卡是否可以运行,否则您将不得不拆卸接入点多次。
然后,我们在机箱上钻了几个孔,安装了2个辫子,并将两端固定在调制解调器上。 不幸的是,没有保存该过程的照片。 另一方面,带有磁性底座的通用天线连接到了辫子上。
除了很小的交互作用外,主要的配置步骤在Internet上已经很好地描述了。 例如,当5条消息来自调制解调器时,调制解调器停止接收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
<?php
3.从论坛Mikrotik routeros_api.class.php下载,并将其放置在服务器上的可访问目录中。
您需要指定断开连接/包含的接口的名称,而不是sfp-sfpplus16。
现在,当向表格中的号码发送消息时
:cmd script enableiface :cmd script disableiface
NETMETAL将运行相应的脚本,然后将在WEB服务器上执行该命令。
接收SMS分数时的操作速度。 它运行稳定。
此外,还具有通过Zabbix监视系统向手机发送SMS的功能,并在光学器件掉落时打开备用Internet连接。 也许这超出了本文的范围,但是我将立即说,发送SMS时,其长度应适合一条消息的标准大小,因为 Mikrotik不会将它们分成几部分,当收到一条长消息时,它根本不会发送,此外,您还需要过滤发送给消息的字符,否则将不会发送SMS。
PS:我现在补充一下以前版本的RouterOS中的门框以及如何处理它们。
1.消息的最大长度和消息中使用的字符是有限的,因此我必须在Zabbix级别上进行斗争,即修复消息发送模板,以便简而言之,很清楚消息的含义。
设置-操作-向短信报告-操作-主题:问题:{HOST.NAME} {TRIGGER.NAME}
并在恢复时向短信报告-恢复操作主题:已解决:{HOST.NAME} {TRIGGER.NAME}
2.此外,将数据发送到调制解调器的脚本本身也缩短了已发送消息的最大长度,因为 如果太长,则不会发送该消息。
PHP脚本发送数据
<?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.清洁RouterOS <6.44的收件箱
系统管理员
/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
如果下面的脚本具有不同的序列号,则在调度程序中,需要将运行7更改为相应的序列号
系统脚本
/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"
序列号为7的脚本
4.在6.38以下的版本中,它还使用内置脚本和调度程序帮助重启了调制解调器。
/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.关于团队补充的一些知识。 要发送SMS,可以在具有Zabbix的主机上说生成RSC文件,然后使用脚本将其发送到Mikrotik上的ftp,然后在调制解调器本身中,通过调度程序中的脚本,运行所需的文件,执行命令,但是在我看来,使用上述机制更方便。
在这种发送的情况下,生成的代码非常简单。
/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"
在此的示例多余的字符已被删除,并且长度是无限的。 解决后,根据此方法处理启动的脚本应在现有Mikrotik文件内复制一个空的RSC文件。
我不喜欢这种方法,因为从原则上讲,没有针对故障的保护措施,并且可能会出现不受控制的未发送消息。
在RouterOS 6.44.1版本中,已经解决了传入邮件溢出的问题,因此您不能诉诸于集体农场清洁方法