MikroTik: Ausführen von Skripten per SMS
Einführung
Dieser Blogeintrag beschäftigt sich mit dem Ausführen von Skripten per SMS-Kommandos. In diesem Beispiel soll als Aktion eine SMS zurückgesendet werden, welche die aktuelle öffentliche IP-Adresse enthält.
Vorbedingungen
- MikroTik RouterBoard mit USB-Port, z.B. ein MikroTik hEX
- USB UMTS-Stick, z.B. ein Standard Huawei Stick aus verschiedenen Prepaid-Angeboten
Los geht’s
Zuerst schauen wir nach, ob der Router den USB-Stick erkannt hat:
[admin@hEX] /system resource usb> print
# DEVICE VENDOR NAME SPEED
0 1-0 Linux 3.3.5 xhci-hcd xHCI Host Controller 480
1 2-0 Linux 3.3.5 xhci-hcd xHCI Host Controller 5000
2 1-1 HUAWEI Technology HUAWEI Mobile 480
Anschließend versenden wir eine Test-SMS:
/tool sms send usb1 "+4915212345678" message="Test"
Nach dem erfolgreichen Test kann das benötigte Skript wie folgt erstellt werden:
/system script
add dont-require-permissions=yes name=extip owner=admin policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\
"/tool fetch url=\"https://icanhazip.com/\" mode=http dst-path=mypublicip.txt\r\
\n:local currentIP [/file get mypublicip.txt contents]\r\
\n:put \$currentIP\r\
\n/tool sms send usb1 \"+4915212345678\" message=\"\$currentIP\";"
Zur Ermittlung der öffentlichen IP wird absichtlich nicht das WAN-Interface abgefragt, sondern ein externer Dienst, da mein Router nicht direkt mit dem Internet verbunden ist. Die Antwort des versendeten GET-Requests wird in der Datei mypublicip.txt zwischengespeichert und direkt darauf per SMS an die im Skript hinterlegte Nummer gesendet.
Zuletzt muss noch der Empfang von SMS aktiviert werden:
/tool sms
set allowed-number=+4915212345678 port=usb1 receive-enabled=yes secret=GeheimesPasswort
Wenn alles geklappt hat, muss man folgenden Text (ohne Anführungszeichen) and die Nummer des UMTS-Sticks senden:
":cmd GeheimesPasswort extip"
Als Antwort sollte anschließend die öffentliche IP-Adresse des Routers kommen.
Weitere Informationen sind dem MikroTik Wiki entnehmbar: