Скриптовый язык RouterOS

Обсуждение ПО и его настройки
Ответить
Аватара пользователя
Dragon_Knight
Модератор
Сообщения: 1531
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

18 май 2016, 15:53

Всем привет.

Возникла необходимость при выполнении скрипта через консоль (import file=) спросить пользователя, хочет он это делать или нет, например: "Install Extra Domain (Block Skype, Hotmain, Dr. Watson and/or Error Reporting) (Y\N) ? : " и пользователю нужно нажать нужную кнопку.
Полазив по wiki, я не нашёл как такое реализовать.



Помощь в ремонте и настройке оборудования MikroTik, Мытищи, Москва.
Дома: [RouterBOARD CCR1009-8G-1S-1S+] + [RouterBOARD cAP 2n] + [RouterBOARD Groove A-2Hn-32] + [D-Link ANT24-0800];
Работа 1: [RouterBOARD RB493G] + [MikroTik R52H] + [MikroTik CA493] + [D-Link ANT24-0800] + [RouterBOARD SXT G-2HnD];
Работа 2: [RouterBOARD RB2011UiAS-IN];
Резерв: [RouterBOARD RB450G];
vqd
Модератор
Сообщения: 3396
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

18 май 2016, 17:12

:put [terminal inkey ]


Есть интересная задача и бюджет? http://mikrotik.site
Аватара пользователя
Dragon_Knight
Модератор
Сообщения: 1531
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

18 май 2016, 17:32

vqd, да, то что нужно. Спасибо :co_ol:

А ещё вопрос. Вот я циклом иду по массиву и выполняю строчку ":if ([find name=$i] = "") do={ add address=127.0.0.1 comment=WinTracking name=$i;". Код выполняется правильно, но если уже есть много записей (15к), то добавление 10 записей таким кодом становиться занятие на минут 10. Если-же не делать такую проверку, то если встречается такая-же запись, получаем исключение и выход их скрипта.
Можно-ли добавлять записи и отслеживать это исключение?



Помощь в ремонте и настройке оборудования MikroTik, Мытищи, Москва.
Дома: [RouterBOARD CCR1009-8G-1S-1S+] + [RouterBOARD cAP 2n] + [RouterBOARD Groove A-2Hn-32] + [D-Link ANT24-0800];
Работа 1: [RouterBOARD RB493G] + [MikroTik R52H] + [MikroTik CA493] + [D-Link ANT24-0800] + [RouterBOARD SXT G-2HnD];
Работа 2: [RouterBOARD RB2011UiAS-IN];
Резерв: [RouterBOARD RB450G];
vqd
Модератор
Сообщения: 3396
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

18 май 2016, 17:35

в микротике есть ексепшн, в вики поищи такую штуку как on-error
Возможно ускорит ибо on-error будет отрабатывать только в момент когда у тебя записи совпадут


Есть интересная задача и бюджет? http://mikrotik.site
Аватара пользователя
Dragon_Knight
Модератор
Сообщения: 1531
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

18 май 2016, 19:24

vqd, конструкция ":do {} on-error={}" не просто ускоряет, а делает установку практически моментальной.
Спасибо. Скоро обновлю мои скрипты на сайте :co_ol:



Помощь в ремонте и настройке оборудования MikroTik, Мытищи, Москва.
Дома: [RouterBOARD CCR1009-8G-1S-1S+] + [RouterBOARD cAP 2n] + [RouterBOARD Groove A-2Hn-32] + [D-Link ANT24-0800];
Работа 1: [RouterBOARD RB493G] + [MikroTik R52H] + [MikroTik CA493] + [D-Link ANT24-0800] + [RouterBOARD SXT G-2HnD];
Работа 2: [RouterBOARD RB2011UiAS-IN];
Резерв: [RouterBOARD RB450G];
23q
Сообщения: 57
Зарегистрирован: 16 май 2013, 11:21

04 июн 2016, 22:36

Dragon_Knight писал(а):Всем привет.

Возникла необходимость при выполнении скрипта через консоль (import file=) спросить пользователя, хочет он это делать или нет, например: "Install Extra Domain (Block Skype, Hotmain, Dr. Watson and/or Error Reporting) (Y\N) ? : " и пользователю нужно нажать нужную кнопку.
Полазив по wiki, я не нашёл как такое реализовать.


vqd писал(а)::put [terminal inkey ]

приведите пример реализации пожалуйся.


Аватара пользователя
Dragon_Knight
Модератор
Сообщения: 1531
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

04 июн 2016, 22:42

23q, только что обновил скрипт: viewtopic.php?f=13&t=6640 Можете изучить на основе его.

Если по простому, то строка ":local key [:terminal inkey]" предлагает нажать пользователю кнопку и после сохраняет её ASCII представление в переменную key.
Т.к. я работаю с цифрами, то я сделал так: ":local key ([:terminal inkey] - 48)", - в key сохраняется нажатая кнопка (0, если нажали кнопку 0, 5 если нажали кнопку 5).



Помощь в ремонте и настройке оборудования MikroTik, Мытищи, Москва.
Дома: [RouterBOARD CCR1009-8G-1S-1S+] + [RouterBOARD cAP 2n] + [RouterBOARD Groove A-2Hn-32] + [D-Link ANT24-0800];
Работа 1: [RouterBOARD RB493G] + [MikroTik R52H] + [MikroTik CA493] + [D-Link ANT24-0800] + [RouterBOARD SXT G-2HnD];
Работа 2: [RouterBOARD RB2011UiAS-IN];
Резерв: [RouterBOARD RB450G];
23q
Сообщения: 57
Зарегистрирован: 16 май 2013, 11:21

05 июн 2016, 00:14

Dragon_Knight писал(а): 23q, только что обновил скрипт: viewtopic.php?f=13&t=6640 Можете изучить на основе его.

Если по простому, то строка ":local key [:terminal inkey]" предлагает нажать пользователю кнопку и после сохраняет её ASCII представление в переменную key.
Т.к. я работаю с цифрами, то я сделал так: ":local key ([:terminal inkey] - 48)", - в key сохраняется нажатая кнопка (0, если нажали кнопку 0, 5 если нажали кнопку 5).

спасибо.


Ответить