Кто Вам мешает писать на Питоне, обращаясь к функциям Микротик через API ? Тогда все функции Роутер ОС будут Вам доступны и скрипты изучать не надо. Ну а если Питон получиться поставить в контейнер, то вообще для Вас красота. Но внедрить Питон или Микропитон в консоль Linux (читай Роутер ОС) - это уж слишком.
Прошу оставляющих комментарии не обсуждать Роутер ОС 7 в целом, а комментировать либо материал статьи либо оставлять пожелания по развитию скриптового языка Микротик.
Товарищ, Вы полегче с подобными комментариями. Во-первых сравнение не корректно, так как, позволю напомнить, что скриптовый язык Роутер ОС - это язык сценариев, а не язык программирования. Да, синтаксис не дружелюбный, но кто сказал, что синтаксис Питона лучше ? До сих пор не понимаю зачем ставить два знака == ? К синтаксису любого языка нужно привыкать, а для скриптового языка возможности Lua Микротик весьма впечатляют. Вы хотя бы примерно представляете какие вещи писали на скриптах Микротик ? Познакомьтесь, может Вам будет полезно. Да и у каждого свой хлеб - Вы зарабатываете тем, что пишите на Питоне, а другие - тем, что пишут скрипты для Микротик. Я даже рад, что язык скриптов Микротик такой какой он есть - не у многих хватит терпения его освоить, поэтому нас мало, но мы в тельняжках. Если же Вам хочется писать на Дельфине, Питоне, Анаконде или тому подобных рыбах, змеях или животных - пожалуйста, мы не возражаем. А нам оставьте наш любимый луноподобный и Lua-подобный язык скриптов Микротик - редкий и блестящий как алмаз лунный камень Коллинза.
С удовольствием прочитал статью. Код велликолепен, всё систематизировано. Мне даже важен не столько сам продукт, обсуждаемый в статье, сколько появившийся в нашем сообществе (я имею ввиду любителей Микротик) профи, который может мыслить шире и глубже чем мы. Да, многие из нас могут написать небольшой скрипт или адаптировать под себя готовые скрипты других авторов, но разработать что-то большое и серьезное может только профессиональный программист, знающий теорию и имеющий практику. Уважаемый Brook, мы рады, что Вы с нами ! Будем с удовольствием учиться у Вас и сотрудничать с Вами.
Сейчас с новинками сложно. Их пока нет, но мы надеемся они будут. Существующие продукты поддерживаются, авторы регулярно выпускают обновления прошивок.
Prometheus посмотрел, не вижу необходимости громоздить ещё Rasberri между Микротиком и программой SNMP мониторинга. Мы работает с Телеграмм и Микротик и не обсуждаем другие подходы.
Не думаю, что Вы реально работаете с 10.000 роутеров Микротик. Вы тогда супер админ с баснословным доходом ?!!! Я при работе с 20 Микротиками уже "разделяю" их в разные чаты.
Допустим в окружении есть активная функция FuncMama и я хочу "передать" её код новой функции FuncPapa (т.е. FuncPapa должна "унаследовать" код функции FuncMama). Это можно сделать простым объявлением или присваиванием (:set):
Теперь FuncPapa содержит тот же код, что и FuncMama и может быть исполнена: [$FuncPapa]. Функции стали копиями.
Мне же нужно сделать в скрипте то же самое, но в случае, когда имена функций FuncMama и FuncPapa содержатся в переменных (то есть заранее не известны).
Благодаря помощи нашего гения скриптинга Александра Чупакабры, вместо строки
/system script run $msgTxt;
Подставляем
[[:parse "[:parse [/system script get $msgTxt source]] $restline"]]
и получаем возможность запуска скриптов с передачей им позиционных и именованных параметров ! Теперь TLGRM действительно "может всё" (может запускать функции окружения с передачей параметров, может запускать скрипты репозитория с передачей параметров, может напрямую исполнять команды ROS !
Низкий поклон и ещё раз огромное спасибо. Напишите, мне, пожалуйста, пару строк на svserkov@nsi.ru чтобы я мог Вам написать "в личку". Понимая Вашу занятость зря отвлекать не буду. С уважением, Sertik.
Проблема в том, что скрипт myScript запускается в обоих примерах, НО ! в примере 2 параметры (указанные явно !) нормально передаются скрипту в количестве 3=х (два позиционных и один именной).
А в примере 1 переменная $line содержит в себе все три параметра и в скрипт myScript передаётся как один (первый) строковый параметр, соответственно остальные два ожидаемых остаются пустыми.
Не хочется в myScript выделять параметры из строки, должно быть нормальное другое решение ...
Рад видеть Ваш отзыв. Не хотите оставить пожеланий по новым командам в Роутер ОС ?
Никто не выдумывал свой синтаксис. Это практически Lua, но адаптированный для нужд языка сценариев Роутер ОС.
Ещё раз подчеркну, статья расчитана на тех, кто серьёзно занимается Микротиком, а не тех кто им пользуется или о нём что-то слышал.
Почти он.
Кто Вам мешает писать на Питоне, обращаясь к функциям Микротик через API ? Тогда все функции Роутер ОС будут Вам доступны и скрипты изучать не надо. Ну а если Питон получиться поставить в контейнер, то вообще для Вас красота. Но внедрить Питон или Микропитон в консоль Linux (читай Роутер ОС) - это уж слишком.
Думаю не за горами установка в контейнеры ROS7 какой-либо оболочки а в ней Питона, например, но нам это не нужно и абсолютно избыточно.
Спасибо, приятно.
Прошу оставляющих комментарии не обсуждать Роутер ОС 7 в целом, а комментировать либо материал статьи либо оставлять пожелания по развитию скриптового языка Микротик.
Товарищ, Вы полегче с подобными комментариями. Во-первых сравнение не корректно, так как, позволю напомнить, что скриптовый язык Роутер ОС - это язык сценариев, а не язык программирования. Да, синтаксис не дружелюбный, но кто сказал, что синтаксис Питона лучше ? До сих пор не понимаю зачем ставить два знака == ? К синтаксису любого языка нужно привыкать, а для скриптового языка возможности Lua Микротик весьма впечатляют. Вы хотя бы примерно представляете какие вещи писали на скриптах Микротик ? Познакомьтесь, может Вам будет полезно. Да и у каждого свой хлеб - Вы зарабатываете тем, что пишите на Питоне, а другие - тем, что пишут скрипты для Микротик. Я даже рад, что язык скриптов Микротик такой какой он есть - не у многих хватит терпения его освоить, поэтому нас мало, но мы в тельняжках. Если же Вам хочется писать на Дельфине, Питоне, Анаконде или тому подобных рыбах, змеях или животных - пожалуйста, мы не возражаем. А нам оставьте наш любимый луноподобный и Lua-подобный язык скриптов Микротик - редкий и блестящий как алмаз лунный камень Коллинза.
У меня стоит много разных версий Рос. Конечно, все мы тестеры в какой-то степени.
Выложил на русскоязычный форум Микротик последнюю продакшен версию LTT
https://forummikrotik.ru/viewtopic.php?f=14&t=14161
С удовольствием прочитал статью. Код велликолепен, всё систематизировано. Мне даже важен не столько сам продукт, обсуждаемый в статье, сколько появившийся в нашем сообществе (я имею ввиду любителей Микротик) профи, который может мыслить шире и глубже чем мы. Да, многие из нас могут написать небольшой скрипт или адаптировать под себя готовые скрипты других авторов, но разработать что-то большое и серьезное может только профессиональный программист, знающий теорию и имеющий практику. Уважаемый Brook, мы рады, что Вы с нами ! Будем с удовольствием учиться у Вас и сотрудничать с Вами.
Сейчас с новинками сложно. Их пока нет, но мы надеемся они будут. Существующие продукты поддерживаются, авторы регулярно выпускают обновления прошивок.
Prometheus посмотрел, не вижу необходимости громоздить ещё Rasberri между Микротиком и программой SNMP мониторинга. Мы работает с Телеграмм и Микротик и не обсуждаем другие подходы.
Не думаю, что Вы реально работаете с 10.000 роутеров Микротик. Вы тогда супер админ с баснословным доходом ?!!! Я при работе с 20 Микротиками уже "разделяю" их в разные чаты.
Ещё один вопрос к гуру:
Допустим в окружении есть активная функция FuncMama и я хочу "передать" её код новой функции FuncPapa (т.е. FuncPapa должна "унаследовать" код функции FuncMama). Это можно сделать простым объявлением или присваиванием (:set):
:global FuncMama; :global FuncPapa $FuncMama
или
:global FuncMama; :global FuncPapa; :set FuncPapa $FuncMama:
Теперь FuncPapa содержит тот же код, что и FuncMama и может быть исполнена:
[$FuncPapa]. Функции стали копиями.
Мне же нужно сделать в скрипте то же самое, но в случае, когда имена функций FuncMama и FuncPapa содержатся в переменных (то есть заранее не известны).
пробовал:
[[:parse ":global $func; :global $command [:parse $func]"]]
и другие всевозможные варианты ... Не работает. Как можно решить эту задачу ?
Благодаря помощи нашего гения скриптинга Александра Чупакабры, вместо строки
Подставляем
и получаем возможность запуска скриптов с передачей им позиционных и именованных параметров ! Теперь TLGRM действительно "может всё" (может запускать функции окружения с передачей параметров, может запускать скрипты репозитория с передачей параметров, может напрямую исполнять команды ROS !
Низкий поклон и ещё раз огромное спасибо. Напишите, мне, пожалуйста, пару строк на svserkov@nsi.ru чтобы я мог Вам написать "в личку". Понимая Вашу занятость зря отвлекать не буду. С уважением, Sertik.
Проверил, Ваш вариант работает на 100%. Вы гений ! Низки
Александр, спасибо Вам большое !
Проблема в том, что скрипт myScript запускается в обоих примерах, НО ! в примере 2 параметры (указанные явно !) нормально передаются скрипту в количестве 3=х (два позиционных и один именной).
А в примере 1 переменная $line содержит в себе все три параметра и в скрипт myScript передаётся как один (первый) строковый параметр, соответственно остальные два ожидаемых остаются пустыми.
Не хочется в myScript выделять параметры из строки, должно быть нормальное другое решение ...