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

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

Всем привет.

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


Небольшой свод правил логики и ссылок:
  1. Если устройство имеет Ethernet порт, то оно обязано быть подключено через него. Компьютер, Ноутбук, Телевизор, Принтер, Камера видеонаблюдения, и т.д.
  2. Если нет возможности протянуть кабель, то найдите её, или страдайте со своими проблемами Wi-Fi дальше.
  3. Wi-Fi это сеть для мобильных устройств. Если Вы подключили свой шикарный 50" телевизор не кабелем, то без фотоотчёта, когда он лежит у Вас в кармане дальнейшего разговора не получиться. Это относится и ко всем остальным устройствам.
  4. Если Ваше устройство вызывает вопросы в работе, первое что необходимо делать: NetInstall + дальнейшая настройка вручную.
  5. Не используйте WebFig или QuickSet - это пути к глюкам и ошибкам. Только SSH или WinBox, и да, - WinBox есть под Android.
  6. name.rsc - это текстовый файл, и Вы можете его открыть блокнотом.
  7. Если Вы хотите связаться со мной для ремонта или настройки, то: Telegram ( Не благотворительность ).
  8. Мой сайт по Mikrotik: Global Zone >> MikroTik.
vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

:put [terminal inkey ]


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

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

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


Небольшой свод правил логики и ссылок:
  1. Если устройство имеет Ethernet порт, то оно обязано быть подключено через него. Компьютер, Ноутбук, Телевизор, Принтер, Камера видеонаблюдения, и т.д.
  2. Если нет возможности протянуть кабель, то найдите её, или страдайте со своими проблемами Wi-Fi дальше.
  3. Wi-Fi это сеть для мобильных устройств. Если Вы подключили свой шикарный 50" телевизор не кабелем, то без фотоотчёта, когда он лежит у Вас в кармане дальнейшего разговора не получиться. Это относится и ко всем остальным устройствам.
  4. Если Ваше устройство вызывает вопросы в работе, первое что необходимо делать: NetInstall + дальнейшая настройка вручную.
  5. Не используйте WebFig или QuickSet - это пути к глюкам и ошибкам. Только SSH или WinBox, и да, - WinBox есть под Android.
  6. name.rsc - это текстовый файл, и Вы можете его открыть блокнотом.
  7. Если Вы хотите связаться со мной для ремонта или настройки, то: Telegram ( Не благотворительность ).
  8. Мой сайт по Mikrotik: Global Zone >> MikroTik.
vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

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


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

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


Небольшой свод правил логики и ссылок:
  1. Если устройство имеет Ethernet порт, то оно обязано быть подключено через него. Компьютер, Ноутбук, Телевизор, Принтер, Камера видеонаблюдения, и т.д.
  2. Если нет возможности протянуть кабель, то найдите её, или страдайте со своими проблемами Wi-Fi дальше.
  3. Wi-Fi это сеть для мобильных устройств. Если Вы подключили свой шикарный 50" телевизор не кабелем, то без фотоотчёта, когда он лежит у Вас в кармане дальнейшего разговора не получиться. Это относится и ко всем остальным устройствам.
  4. Если Ваше устройство вызывает вопросы в работе, первое что необходимо делать: NetInstall + дальнейшая настройка вручную.
  5. Не используйте WebFig или QuickSet - это пути к глюкам и ошибкам. Только SSH или WinBox, и да, - WinBox есть под Android.
  6. name.rsc - это текстовый файл, и Вы можете его открыть блокнотом.
  7. Если Вы хотите связаться со мной для ремонта или настройки, то: Telegram ( Не благотворительность ).
  8. Мой сайт по Mikrotik: Global Zone >> MikroTik.
23q
Сообщения: 57
Зарегистрирован: 16 май 2013, 11:21

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
Сообщения: 1724
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

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

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


Небольшой свод правил логики и ссылок:
  1. Если устройство имеет Ethernet порт, то оно обязано быть подключено через него. Компьютер, Ноутбук, Телевизор, Принтер, Камера видеонаблюдения, и т.д.
  2. Если нет возможности протянуть кабель, то найдите её, или страдайте со своими проблемами Wi-Fi дальше.
  3. Wi-Fi это сеть для мобильных устройств. Если Вы подключили свой шикарный 50" телевизор не кабелем, то без фотоотчёта, когда он лежит у Вас в кармане дальнейшего разговора не получиться. Это относится и ко всем остальным устройствам.
  4. Если Ваше устройство вызывает вопросы в работе, первое что необходимо делать: NetInstall + дальнейшая настройка вручную.
  5. Не используйте WebFig или QuickSet - это пути к глюкам и ошибкам. Только SSH или WinBox, и да, - WinBox есть под Android.
  6. name.rsc - это текстовый файл, и Вы можете его открыть блокнотом.
  7. Если Вы хотите связаться со мной для ремонта или настройки, то: Telegram ( Не благотворительность ).
  8. Мой сайт по Mikrotik: Global Zone >> MikroTik.
23q
Сообщения: 57
Зарегистрирован: 16 май 2013, 11:21

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).

спасибо.


Ответить