Помощь в написании скриптов для RouterOS

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Ответить
Аватара пользователя
Dragon_Knight
Сообщения: 1724
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

Все мы знаем, что разработчики очень странные и явно употребляют какие-то вещества, ибо такой ... скриптовый язык сделать в трезвом уме невозможно, особенно на фоне того, что существует куча готовых языков, идеально подходящие под эти задачи: sh, Lua, Perl, ... PHP в конце концов, но....

Собственно в честь открытия этой темы, позвольте мне задать первые вопросы:
Как утилитой fetch положить принятый ответ сразу в переменную, не прибегая к насилованию NAND памяти (сохранить в файл, прочитать в переменную, удалить файл). Если никак, тогда как отловить результат работы утилиты fetch (true || false). У меня получается или получить результат, при этом файл с ответом сервера не создаётся, или создать файл с результатом ответом сервера, но успешность запроса - пустая строка.


Небольшой свод правил логики и ссылок:
  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
Откуда: НСК
Контактная информация:

Простой язык, для тонкой настройки роутера функционала почти хватает

Код: Выделить всё

:do {
/tool fetch keep-result=no url=http://download2.mikrotik.com/swos/1.17/swos-rb260-1.17.lzb
:put true
} on-error={:put false}


Есть интересная задача и бюджет? http://mikrotik.site
Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

По языку у меня совсем другое мнение. Разработчики молодцы. Перед ними стояла задача создать интуитивно понятный язык, пригодный к освоению в кратчайшие сроки пользователями, далекими от написания кода. С задачей они справились неплохо. Всё логично, вытекает одно из другого, перекликается с визуальной реализацией (Winbox, Webfig)...
Понятно, что с точки зрения продвинутого кодописателя язык беден и негибок. Но ориентировались не на них. Ниша у продукции совсем другая. Хотя, vqd в своё время высказывал очень здравую мысль о том, что можно было бы давать расширенный функционал за отдельную плату. Я согласен без GUI-вариантов. Оплатил бы и не задумался. Вполне возможно, что со временем такое и будет реализовано. Например в 8 версии программного обеспечения :-)


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Аватара пользователя
Dragon_Knight
Сообщения: 1724
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

vqd, про do {} on-error={} я как-то забыл... уже какой раз. Спасибо.

Язык-то простой, не спорю, но из-за его попытки угодить новичкам, появляются такие моменты, которые вызывают когнитивный диссонанс...
А 8 версия ROS выйдет сразу после выхода Half-Life 3, да и не факт что скриптовый язык будет меняться, ибо если они её поменяют, то представьте, - все скрипты что есть сейчас можно будет удалять...


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

И вот я поправил свою функцию и всё равно меня очень напрягает момент использования flash памяти как буфер...
Простая математика: Я экспериментирую на устройстве RB951-2n, т.к. там уже флешка посыпалась и нужно её перепаивать.. Так вот там стоит память K9F1208U0C-P, на 3 станице написано: "Endurance: 100K Program/Erase Cycles (with 1bit/512Byte ECC)". Допустим скрипт будем выполнять каждую минуту. Считаем: 100000 / (1 * 24 * 60) = ~69.5 дня. Т.е. каждые два месяца мы получаем кирпич, у которого нужно менять флешку. Даже если учесть хитрые алгоритмы распределения данных по памяти, которые максимум продлят жизнь флешки в два - три раза... Всё равно перспектива менять роутера каждые 3 - 4 квартала не радует....

Код: Выделить всё

:local GetUpdate do={
   :local result;
   
   :do {
      /tool fetch url=($CFGURL . "\?id=" . $CFGID . "&mode=update") mode=http keep-result=yes dst-path=update.fetch;
      :delay 1s;
      :set result [/file get [/file find name=update.fetch] contents];
      /file remove [/file find name=update.fetch];
   } on-error={
      :log error "[*]: Error receiving data.";
      :set result false;
   };
   
   :return $result;
};


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

А есть способ получить код ошибки HTTP из утилиты fetch? Например что-бы если код 200, то пишу результат в файл, а если другой, то просто возвращаем этот код?
Всё думаю над оптимизацией насилования флешки...


Небольшой свод правил логики и ссылок:
  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
Откуда: НСК
Контактная информация:

нет к сожалению.

Насчет насилования флешки, у меня есть проект большой где с десяток 1016 пашут круглые сутки и обмениваются данными с другими микротикам. Флешка там нагружена очень сильно (с десяток скриптов на нее постоянно что то пишут и читают), так вот за 2 года еще ни один микротик не упал.

Был еще один клиент который боялся за флешку, воткнул обычную УСБ на нее все пишет. Работает так уже с год


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

vqd, спасибо за ответ.
Ну вероятнее всего алгоритмы кеширования делают своё дело.

А вот пришла идея, что если ответ от сервера будет пустой ( Content-Length: 0 )?
Дома попробую и отпишусь.
ADD: Нет, даже если результат пустой, файл обновляется :(


Небольшой свод правил логики и ссылок:
  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.
Ответить