Совсем простой, но иногда необходимый скрипт. Давайте поставим задачу. Необходимо выполнять какое-то действие, при получении смс на модем подключённый MikroTik-у. Нам понадобиться настроить MikroTik таким образом, чтобы он смог считывать сообщения с USB модема. В нашем распоряжении есть модем производителя HUAWEI
[admin@MikroTik.Me] /system resource usb> print detail where device-id!="0x0002" 0 device="1:5" vendor="HUAWEI" name="HUAWEI Mobile" vendor-id="0x12d1" device-id="0x1506" speed="480 Mbps" ports=0 usb-version="2.00"
Необходимо определить количество каналов доступные в PPP устройстве
[admin@MikroTik.Me] /port> print detail where name~"usb" Flags: I - inactive 0 name="usb2" used-by="sms tool" device="1:5" channels=4 baud-rate=9600 data-bits=8 parity=none stop-bits=1 flow-control=none
Как видно из вывода количество каналов у нас 4, помним, что количество — это значение, начинающееся с единицы и отображающее именно количество каналов. А сами каналы начинаются с нуля, соответственно нам доступны каналы под номерами 0,1,2,3.
Вот с этими каналами мы и будем работать, чтобы определить необходимый канал для работы. Методом перебора необходимо определить канал, суть определения понять в каком канале возможен обмен AT командами управления.
Нажмите Enter и введите команду AT и нажмите Enter если в ответ получим OK, значит это тот канал который нам необходим.
[admin@MikroTik.Me] /system> serial-terminal port=usb1 channel=3
В нашем случае это третий канал.
Ну что определились теперь давайте настроем RouterOS так чтобы он смог принимать СМС
/tool sms set channel=3 port=usb2 secret=1111 receive-enabled=yes
теперь вы можете прочитать смс используя команду
[admin@MikroTik.Me] /tool sms inbox> print detail
Удалить SMS командой:
/tool sms inbox remove "номер сообщения"
Но поскольку у меня симка мегафон ставим приложение мультифон и смс и звонки приходят туда.
А теперь сам скрипт:
:local messageSMS "needdisableinterface";
:local phoneSMS "+79999999999";
:local defNameInterface "ether9";
:local countMSG [/tool sms inbox print count-only where message=$messageSMS phone=$phoneSMS];
:if ($countMSG = 0) do={
/tool sms inbox remove [find];
} else={
/interface ethernet disable [find default-name=$defNameInterface];
}
Отсюда:https://mikrotik.me/blog/34