今天是個好日子!
這次我決定描述一個網路上似乎沒有特別描述的情況,雖然有一些提示,但大部分只是對 Mikrotik 本身的程式碼和 wiki 進行了長時間的有條不紊的挖掘。
實際任務:透過簡訊實現對多個裝置的控制,以開啟和關閉連接埠為例。
可用的:
- 輔助路由器CRS317-1G-16S+
- Mikrotik NETMETAL 5 存取點
- 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