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

Здесь выкладываем скрипты
Ответить
ivan.losev
Сообщения: 3
Зарегистрирован: 28 фев 2019, 13:20

28 фев 2019, 13:29

Друзья! У меня есть роутер (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," ?

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


Sertik
Сообщения: 628
Зарегистрирован: 15 сен 2017, 09:03

28 фев 2019, 14:51

Это не так то уж просто, если делать хорошо а не бог весть как.

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

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-команд, названия и действия которых описываются в специальных массивах.


Чего не знаем то нагуглим
olga
Сообщения: 1
Зарегистрирован: 02 мар 2019, 23:35

02 мар 2019, 23:44

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


Sertik
Сообщения: 628
Зарегистрирован: 15 сен 2017, 09:03

04 мар 2019, 14:42

:-) Не за что ! :-) :-) :-)


Чего не знаем то нагуглим
anad
Сообщения: 164
Зарегистрирован: 24 ноя 2016, 21:14

04 мар 2019, 14:58

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


Ответить