All streams
Search
Write a publication
Pull to refresh
39
0
Серков Сергей Владимирович @Sertik13

пишу скрипты для роутеров Микротик

Send message

Рад видеть Ваш отзыв. Не хотите оставить пожеланий по новым командам в Роутер ОС ?

Никто не выдумывал свой синтаксис. Это практически 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]"]]

и другие всевозможные варианты ... Не работает. Как можно решить эту задачу ?

Благодаря помощи нашего гения скриптинга Александра Чупакабры, вместо строки

                        /system script run $msgTxt;

Подставляем

           [[:parse "[:parse [/system script get $msgTxt source]] $restline"]]

и получаем возможность запуска скриптов с передачей им позиционных и именованных параметров ! Теперь TLGRM действительно "может всё" (может запускать функции окружения с передачей параметров, может запускать скрипты репозитория с передачей параметров, может напрямую исполнять команды ROS !

Низкий поклон и ещё раз огромное спасибо. Напишите, мне, пожалуйста, пару строк на svserkov@nsi.ru чтобы я мог Вам написать "в личку". Понимая Вашу занятость зря отвлекать не буду. С уважением, Sertik.

Проверил, Ваш вариант работает на 100%. Вы гений ! Низки

Александр, спасибо Вам большое !

Проблема в том, что скрипт myScript запускается в обоих примерах, НО ! в примере 2 параметры (указанные явно !) нормально передаются скрипту в количестве 3=х (два позиционных и один именной).

А в примере 1 переменная $line содержит в себе все три параметра и в скрипт myScript передаётся как один (первый) строковый параметр, соответственно остальные два ожидаемых остаются пустыми.

Не хочется в myScript выделять параметры из строки, должно быть нормальное другое решение ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity