微克羅蒂克。 使用 WEB 伺服器透過 SMS 進行控制

今天是個好日子!

這次我決定描述一個網路上似乎沒有特別描述的情況,雖然有一些提示,但大部分只是對 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不會將它們分成幾部分,當長訊息到達時,它根本不發送它,此外,您需要過濾訊息中傳輸的字符,否則短信將不會發送。

來源: www.habr.com

添加評論