ミクロティク。 WEBサーバーを利用したSMSによる制御

みんなに良い一日を!

今回は、インターネット上で特に説明されていないような状況について説明することにしました。ヒントはいくつかありますが、そのほとんどはコードと Mikrotik 自体の wiki を長く系統的に掘り下げただけでした。

実際のタスク: ポートのオンとオフを切り替える例を使用して、SMS を使用して複数のデバイスの制御を実装します。

あります:

  1. セカンダリ ルータ CRS317-1G-16S+
  2. Mikrotik NETMETAL 5 アクセス ポイント
  3. LTEモデム R11e-LTE

まず、素晴らしい Netmetal 5 アクセス ポイントには、はんだ付けされた SIM カード コネクタと LTE モデムを取り付けるためのポートが搭載されているという事実から始めましょう。 したがって、このポイントでは、基本的に、ポイント自体のオペレーティング システム (つまり R11e-LTE) で利用可能でサポートされているものから最適なモデムを購入しました。 アクセス ポイントは分解され、すべてが所定の位置に取り付けられていました (ただし、SIM カードはモデムの下にあり、メイン ボードを取り外さないと入手できないことを知っておく必要があります)。そのため、SIM カードの機能を確認します。そうしないと、アクセス ポイントを数回分解する必要があります。

次に、ケースにいくつかの穴を開け、2 つのピグテールを取り付け、端をモデムに固定しました。 残念ながら、その過程の写真は残っていない。 一方、磁気ベースを備えたユニバーサルアンテナがピグテールに取り付けられました。

主なセットアップ手順は、小さな対話上のギャップを除いて、インターネット上で非常に詳しく説明されています。 たとえば、SMS メッセージが 5 通到着するとモデムは受信を停止し、受信トレイでハングします。メッセージを消去してモデムを再起動しても、必ずしも問題が解決するとは限りません。 ただし、バージョン 6.44.1 では、受信がより安定して動作します。 受信トレイには最後の 4 つのSMSが表示され、残りは自動的に消去され、生活に支障をきたしません。

実験の主な目的は、同じ物理ネットワーク上の XNUMX つのルーターのインターフェイスをオフにしてからオンにすることです。 主な問題点は、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 サーバー上でコマンドを実行します。

SMS受信時の動作速度は数分のXNUMX秒です。 安定して動作します。

さらに、Zabbix 監視システムによって電話に SMS を送信し、光学系に障害が発生した場合にバックアップのインターネット接続を開く機能もあります。 おそらくこれはこの記事の範囲を超えていますが、SMS を送信する場合、SMS の長さは XNUMX つのメッセージの標準サイズに収まる必要があるとすぐに言っておきます。 Mikrotik はそれらを部分に分割せず、長いメッセージが到着しても単に送信しません。さらに、メッセージ内で送信される文字をフィルターする必要があります。そうしないと、SMS は送信されません。

出所: habr.com

コメントを追加します