Страница 1 из 1

Помощь в написании скрипта.

Добавлено: 28 фев 2019, 13:29
ivan.losev
Друзья! У меня есть роутер (MikroTik RouterBOARD mAP 2nD) с воткнутым в него модемом, Охранная система и Ethernet+GSM контроллер управления Laurent-2G.

С системы охраны приходит смс (сигнал жизни) на MikroTik каждый час с 10 утра до 11 вечера.

Мне нужно написать скрипт и поставить его исполнение в планировщик с частотой каждые 2 часа. Задача этого скрипта такая: если смс (сигнал жизни) приходит по расписанию каждый час то ничего не делать. Если смс (сигнал жизни) с какого то часа перестали приходить то исполнить скрипт (/tool fetch url="http://192.168.0.101/cmd.cgi?cmd=REL,2,1,2,") который отвечает за включение реле на контроллере, которое перезагружает систему охраны, которая посылает сигнал жизни.

Вообще в целом мне бы просто понять, как заставить микрот исполнить скрипт если смс не пришло.

Это должна быть конструкция типа: :if ([/tool sms не пришло]=false) do={
/tool fetch url="http://192.168.0.101/cmd.cgi?cmd=REL,2,1,2," ?

Извините, друзья, если я что-то не так пишу, я пытаюсь!)) Спасибо!

Re: Помощь в написании скрипта.

Добавлено: 28 фев 2019, 14:51
Sertik
Это не так то уж просто, если делать хорошо а не бог весть как.

Отвечу в целом.

1. Должен быть правильно настроен /tool sms и желательно защищен разрешенными телефонными номерами и кодовым словом.

2. У некоторых плат Микротика есть проблемы с питанием по USB и модем может "зависать", это необходимо проверять в скрипте. При зависании скрипт должен делать usb power reset для перезагрузки модема, в Вашем случае принимающего СМС (а то есть большой риск их не получить).

3. Ваш скрипт, запускаемый через планировщик с нужной Вам переодичностью по времени должен в цикле читать все СМС-сообщения из их хранилища и искать сообщение нужное Вам по какому-либо критерию (например, по тексту сообщения сравнивая его с шаблоном). Дальше - если мы нашли нужное нам сообщение - то есть оно пришло - то ... НИЧЕГО НЕ ДЕЛАЕМ и стираем его (т.к. иначе хранилище СМС заполнится и Микротик перестанет сообщения принимать).
Если сообщение не приходит в течении нужных интераций скрипта через шедуллер - то значит нужно инвертировать реле Вашего Лаурента командой /tool fetch ... ит д...

4. Плюс нужно предусмотреть в скрипте обработку ошибок, чтобы он не вис (например, после неудачного fetch если Ваш Лоран повис и т. д...)

Вообще это весьма не простой велосипед если нужно сделать всё корректно. А в случае с сигнализацией тем более :-)

Ваш покорный слуга, кстати написал когда-то библиотеку готовых функций управления Лаурент с Микротик - об этом можно почитать тут:

https://habrahabr.ru/post/348120/
http://apimikrotik.blogspot.ru/

Там же можно "биплатно" скачать старые библиотеки скриптов для этого дела.

Также у меня есть "авторский" готовый скрипт "SMS-minicommander" - который умеет исполнять любой набор SMS-команд, названия и действия которых описываются в специальных массивах.

Re: Помощь в написании скрипта.

Добавлено: 02 мар 2019, 23:44
olga
здравствуйте, мне очень нужен скрипт для переноса свободных ip адресов(которых нет leases) в какой-нибудь адрес лист, для дальнейшей блокировки.
с микротиком дружу не долго.
Спасибо!!!

Re: Помощь в написании скрипта.

Добавлено: 04 мар 2019, 14:42
Sertik
:-) Не за что ! :-) :-) :-)

Re: Помощь в написании скрипта.

Добавлено: 04 мар 2019, 14:58
anad
olga писал(а): 02 мар 2019, 23:44 здравствуйте, мне очень нужен скрипт для переноса свободных ip адресов(которых нет leases) в какой-нибудь адрес лист, для дальнейшей блокировки.
с микротиком дружу не долго.
Спасибо!!!
а создать отдельную тему было не судьба?
задача: запретить выход в Интернет всем, кроме тех, кому выдали DHCP ? Если да, то такое решение было, например https://mikrotikwizard.com/ru/%D0%BF%D0 ... 0%B0%D0%BC ( правда я не уверен что оно работает - смотреть лень).