Страница 5 из 12

Re: Телеграмма для Mikrotik...

Добавлено: 25 авг 2022, 21:53
Brook
-13- писал(а): 25 авг 2022, 18:23 В скрипте teSetMyCommands нет значения переменной $endCommand, так задумано?
:-): Осталось после рефакторинга. Она не используется уже. Закрывается переменной :local end "\5D".

Изображение

В цикле for собирается команда из массива. В результате получается лишняя запятая в конце строки. Она убирается после цикла

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

:set cmdItems [:pick $cmdItems 0 ([:len $cmdItems] - 1)]
$endCommand я уберу в следующем билде. Спасибо за внимательность. Чистота кода очень важна.

Re: Телеграмма для Mikrotik...

Добавлено: 26 авг 2022, 13:15
-13-
Спасибо за скрипт teSetMyCommands, утащил в копилку))

Чуть причесал под своих ботов, свой вариант выложу тут, если автор не против
 

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

# Name: teSetMyCommands
# Description: Set commands & description to Main botTelegram

:global fnParse

:set $dbCmd [[$fnParse script="dbCmd"]]
:set $botID ($dbCmd->"botID")
#:set $mainCmd ($dbCmd->"mainCmd")
:set $mainCmd "interfaces - Get interfaces list,users - Get users list"; #test mainCmd List
:set $apiTg ($dbCmd->"apiTg")

:set $mainCmd [:toarray $mainCmd]
:foreach i in=$mainCmd do={
    :set $Description [:pick $i ([find $i "-"] + 2) [:len $i]]
    :set $Description ",\22description\22:\22$Description\22\7D,"
    :set $Cmd [:pick $i 0 ([find $i "-"] - 1)]
    :set $Cmd "\7B\22command\22:\22$Cmd\22"
    :set $Cmd ($Cmd . $Description)
    :set $listCmd ($listCmd . $Cmd)
}
:set $mainCmd [:pick $listCmd 0 ([:len $listCmd] - 1)]
:set $mainCmd ("\5B" . $mainCmd . "\5D")

:set $fetchCmd "/setMyCommands\?commands=$mainCmd"
:set $fetchCmd ($apiTg . $botID . $fetchCmd)
/tool fetch url=$fetchCmd output=user

# End

Re: Телеграмма для Mikrotik...

Добавлено: 26 авг 2022, 14:19
Brook
-13- писал(а): 26 авг 2022, 13:15 Спасибо за скрипт teSetMyCommands, утащил в копилку))

Чуть причесал под своих ботов, свой вариант выложу тут, если автор не против
Пожалуйста. Я не против. Этот скрипт, кстати, давно лежит в первом сообщении этого поста.

Подскажите, у Вас бот заработал на ROS 7?

Re: Телеграмма для Mikrotik...

Добавлено: 26 авг 2022, 14:41
-13-
Brook писал(а): 26 авг 2022, 14:19
-13- писал(а): 26 авг 2022, 13:15 Спасибо за скрипт teSetMyCommands, утащил в копилку))

Чуть причесал под своих ботов, свой вариант выложу тут, если автор не против
Пожалуйста. Я не против. Этот скрипт, кстати, давно лежит в первом сообщении этого поста.

Подскажите, у Вас бот заработал на ROS 7?
не заработал, пока не разбирался

Re: Телеграмма для Mikrotik...

Добавлено: 29 авг 2022, 14:03
Brook
Друзья, написал небольшую статью о том, как я пришел к разработке на RouterOS.

Если кому интересно узнать на что ещё способен Микротик, то статья доступна по ссылке.
Выложил её на Хабре, но пока она на модерации. Может кто укажет на неточности или что-то добавит...

Re: Телеграмма для Mikrotik...

Добавлено: 29 авг 2022, 15:04
Sertik
Прочитал статью. Она адресована друзьям (но прочитать могут и "враги" :-) ...) Хорошо, но на мой взгляд слишком обобщающе, мало интересных подробностей. Хотелось бы просить автора немного "развернуть" описание отдельных модулей и подпрограмм ... (Хотя может быть он этого не хочет, т.к. продукт вполне может стать коммерческим). Отдельное спасибо автору за то, что он поддержал давно высказываемую мною (в частности) мысль - возможности микротик шире обычного роутера. За это меня много ругали, говоря о том, что роутер должен быть только роутером ... Очень интересна идея использовать РоутерОС как среду программирования, среду управления процессами, например на виртуальном роутере с большой библиотекой скриптов. Или, например, можно использовать виртуальный роутер как библиотеку скриптов и функций... (в которую будут "ходить" другие роутеры по мере надобности).

Искренне желаю автору удачи и новых проектов ! Не бросайте начатого и очень рад "читать Вас" на форуме.

Re: Телеграмма для Mikrotik...

Добавлено: 29 авг 2022, 16:05
Brook
Sertik писал(а): 29 авг 2022, 15:04 Прочитал статью. Она адресована друзьям (но прочитать могут и "враги" :-) ...) Хорошо, но на мой взгляд слишком обобщающе, мало интересных подробностей. Хотелось бы просить автора немного "развернуть" описание отдельных модулей и подпрограмм ... (Хотя может быть он этого не хочет, т.к. продукт вполне может стать коммерческим). Отдельное спасибо автору за то, что он поддержал давно высказываемую мною (в частности) мысль - возможности микротик шире обычного роутера. За это меня много ругали, говоря о том, что роутер должен быть только роутером ... Очень интересна идея использовать РоутерОС как среду программирования, среду управления процессами, например на виртуальном роутере с большой библиотекой скриптов. Или, например, можно использовать виртуальный роутер как библиотеку скриптов и функций... (в которую будут "ходить" другие роутеры по мере надобности).

Искренне желаю автору удачи и новых проектов ! Не бросайте начатого и очень рад "читать Вас" на форуме.
Эта статья как раз и задумывалась для того, чтобы показать на сколько RouterOS недооценена. Ведь это в первую очередь OS, т.е. операционная система. А раз это OS, то под неё можно писать код. И это не обязательно должен быть код, который управляет самим устройством.

Полностью согласен с Вашим тезисом "использовать РоутерОС как среду программирования, среду управления процессами" и т.д. Для этого даже не нужно использовать всевозможные адрес-листы или другие элементы управления роутером.

Например, если в адрес-листах около 300 тыс. элементов, то система начинает тормозить. Такое поведение, скорее всего, связано с внутренней реализацией хранения данных. Но при работе с глобальным массивом, где более 500 тыс. элементов, я вообще не увидел никаких "тормозов", главное чтобы памяти было достаточно. Массивы вообще очень мощный инструмент, в Микротике у них достаточно не плохая реализация. Это по сути БД, нужно только написать систему управления.

В общем, возможности по созданию бэк-эндов под различные системы, достаточные. Я это покажу на примере своего следующего проекта в скором времени.

Что касается mikRobotа, то вопросы о том, как это всё работает можно задавать здесь. Я постараюсь развернуто на них отвечать. К сожалению, написать полноценный мануал, нет времени. Для этого, в идеале, нужен технический писатель, которого пока в наличии нет.

Целью создания бота было не только управление своими устройствами. В основе - дать сообществу готовую базу для разработки своего функционала в виде алгоритмов и библиотечных функций. Кстати, они тоже будут пополняться. Сейчас в разработке функции для работы в inline режиме. Это позволит создавать ещё более привлекательный и удобный интерфейс.

И большое спасибо за пожелания. Я постараюсь по максимуму делиться информацией с сообществом.

Re: Телеграмма для Mikrotik...

Добавлено: 04 сен 2022, 03:34
Brook
Задача: :du_ma_et:

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

:global arraydata [:toarray ""]
:set arraydata ({{"0"={"callbackquery"={"id"=0;"from"={"username"="name";"id"=0};"message"={"chat"={"id"=0}}}}}})
В глобальной переменной лежит многомерный ассоциативный массив. Кроме него в environment ничего больше нет.
Команда :environment print выводит его в таком же виде, как он инициализируется.

Код ниже, сохраняет этот массив в файл, чтобы потом сразу из него развернуть, без танцев с бубном.

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

:execute script=":put \":global newArray [:toarray \\\"\\\"]\r\n:set (\\\$newArray) ({\"; [:environment print]; :put \"})\"" file=newarray.txt
Если переменных в окружении много, то в файл добавятся все.
Может кто доведет до ума? Чтобы можно было этот массив из файла достать и развернуть. А то ну никак времени нет...

upd: 04.09.2022 Хабр опубликовал мою статью...

Re: Телеграмма для Mikrotik...

Добавлено: 04 сен 2022, 15:07
Brook
Сейчас инспектирую RouterOS v.7

Появилось несколько новых возможностей.

1. Наконец-то завезли тип данных timestamp - это время в Unix формате. Даты теперь можно сравнивать без преобразования. :co_ol:

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

:put [:timestamp]
2735w21:41:43.481891543
2. Появилась команда retry - пытается выполнить код заданное количество раз. Если не получилось, то выполняется код из блока on-error :bra_vo:

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

:retry command={abc} delay=1 max=2 on-error={:put "got error"}
got error
3. Так же завезли генератор случайных чисел. Команда rndnum генерирует рандомное число из интервала.

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

:put [:rndnum from=1 to=99];
4. Еще один генератор. Команда rndstr генерирует строку из указанных символов.

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

:put [:rndnum from="abcdef%^&" length=33];
5. Появился RestAPI. Крутится на сервисе www-ssl. Работает в формате JSON. Поддерживает все необходимые запросы, в том числе и PUT, POST. Теперь рулить микротиком можно проще.

Всё это расширяет возможности скриптов. К сожалению так и не добавили числа с плавающей точкой :ny_tik:. Это наверное единственное чего сейчас не хватает.

Так или иначе, новый проект будет под семерку.

Re: Телеграмма для Mikrotik...

Добавлено: 04 сен 2022, 18:11
Inner
Пока для тестов обновил домашний hap ac2. Долго сидел на 7.3 Впечатления были крайне смешанные. Сегодня обновился до 7.5 Пока что непонятно. Я бы рекомендовал сильно не спешить работать с ros7. Ну или потерпеть пару месяцев. Вроде как опросы показывают, что в организациях все на 6 сидят. Да и домашние мало кто на 7 перевёл