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

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Аватара пользователя
Brook
Сообщения: 127
Зарегистрирован: 24 май 2022, 00:29

Sertik писал(а): 05 авг 2022, 10:12 Спасибо, интересно и нужно. А если обнулить первый массив что будет ? :-):
Со вторым ничего не случится. Если таким способом "обнулять" :set array1 [ ]


Аватара пользователя
Brook
Сообщения: 127
Зарегистрирован: 24 май 2022, 00:29

Тут на форуме несколько раз встречал вопросы по запуску команд на микротике через Телеграм. Не скриптов, а именно команд, как в терминале.

В моем боте это реализовано, но там в комплексе всё. Если у сообщества есть потребность, могу написать упрощенную версию, где будет чистый терминал...


Inner
Сообщения: 248
Зарегистрирован: 01 июл 2020, 16:02

Наверное, немного не по теме, но работает ли regexp на input? И думаю, будет более правильно писать мои дттошные вопросы в эту тему касательно альтернативы API телеграма :nez-nayu:


Аватара пользователя
Brook
Сообщения: 127
Зарегистрирован: 24 май 2022, 00:29

Inner писал(а): 09 авг 2022, 23:55 Наверное, немного не по теме, но работает ли regexp на input? И думаю, будет более правильно писать мои дттошные вопросы в эту тему касательно альтернативы API телеграма :nez-nayu:
regexp на input конечно работает и теоретически можно наделать кучу regexp правил и мониторить их в Firewall rules например. Они будут писать в лог определенные команды. Эти команды считывать скриптом из лога и выполнять какие-то действия. Телеграм для этого совсем не нужен.

Это отдельная интересная тема и лучше для нее создать свой топик.


Аватара пользователя
Brook
Сообщения: 127
Зарегистрирован: 24 май 2022, 00:29

В шапку добавлена функция генерации рандомного значения teGenValue


Аватара пользователя
Brook
Сообщения: 127
Зарегистрирован: 24 май 2022, 00:29

Друзья, не вынесла душа поэта...

Опубликовал базовую версию бота на своем канале в Телеграм.

Для использования доступен следующий функционал:

- Терминал. Может выполнять любые команды, кроме tracert и ping, если у последнего не указан параметр count;
- Информация о системе, с возможностью создания бэкапов и обновления прошивки;
- Модуль Interfaces, отображает информацию об интерфейсах, позволяет деактивировать любой из них. Не отображает интерфейс, где в имени есть GW;
- Скрипты. Отображает и позволяет выполнить любой скрипт, имя которого начинается на isBot (имя должно быть без пробелов).

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

Главный скрипт mainBot, он постоянно мониторит сервер Телеграм на наличие сообщений, получает их и передает на обработку функции диспетчеру. Для callBackов это teCallbackResponse, для текстовых команд - teMessageResponse, для модуля Терминала - teTerminalResponse

Диспетчер определяет какому обработчику предназначена команда и передает ему управление. Обработчики развернуты в скриптах, имя начинается на teCallback. Он выполняет действия и передает параметры в функцию построения ответного сообщения, развернутую в глобальном окружении.

Настройки бота и хранилища данных разворачиваются в скрипт с префиксом dbase. Тут объявляются и инициализируются массивы, содержащие параметры бота, настройки команд Терминала, настройки пользовательских прав и т.д. Это вкратце.

Такой подход позволяет использовать код, как базу для разработки своих модулей. Поэтому любой из вас может самостоятельно дописывать нужный функционал.

Вопросы, если они появятся, можно задавать здесь.

Дерзайте друзья.


Inner
Сообщения: 248
Зарегистрирован: 01 июл 2020, 16:02

Потестировал немногим больше недели. И всё супер. Всё работает как и должно. Никаких проблем не наблюдается. Для меня, конечно, немного функционал избыточен, но я плавно начинаю пользоваться всем что есть. И это очень удобно. Многие могут подумать, что проще всё одним скриптом сделать и писать свои команды в чат боту, но это ошибочно. Сей продукт даже не рядом. Тут и визуал красивый (кто бы мог подумать, что на базе телеги можно сделать что-то новое), и возможностей более чем хватает. Под себя ничего не переделывал. Установил как есть.

Сейчас использую в сети среднего предприятия. Интегрировал с заммадом (у него есть вшитая интеграция с телегой. Но с ботом из этого топика очень даже подружился. Конфликтов не наблюдаю). Разграничил людей. Теперь у меня СБ читает логи с оборудования. А техподдержка больше не ждёт меня для решения простеньких задач. А задачи (со стороны неполадок оборудования) в ТП создаются на полуавтомате. Комфорт, которого мне не хватало.

Добавьте, пожалуйста, возможность рулить vLan (создавать, удалять, изменять, вкл/выкл) и, мне кажется, это будет идеал.

P.S.: В другие организации пока что не внедряю, так как в них используются преимущественно облачные решения на базе CHR (туннели, естественно EoIP). Специфика иная. Так что, на данном этапе не применимо


Аватара пользователя
Brook
Сообщения: 127
Зарегистрирован: 24 май 2022, 00:29

Inner писал(а): 23 авг 2022, 08:32
Добавьте, пожалуйста, возможность рулить vLan (создавать, удалять, изменять, вкл/выкл) и, мне кажется, это будет идеал.
Большое спасибо за отзыв. По поводу vLan обязательно подумаю, как это можно сделать красиво.
Сейчас vLanы отображаются в группе интерфейсов и там их можно вкл/выкл.

А пока, добавить новый, отредактировать или удалить можно добавлением шаблонов команд в меню Терминала
Ниже прописал такие команды. Их надо добавить в массив dbaseCommands.rsc и нажать Run script


 Команды Терминала

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

Добавление vLan

"add vLAN"="=> :set \$vn vlan; :set \$vid 20; :set \$if ether10; :return [interface vlan add name=\$vn arp=enabled vlan-id=\$vid interface=\$if]";

Переменные:
$nvn - имя нового vLan
$vid - ID нового vLan
$if - имя интерфейса нового vLan

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

Изменение vLAN

"set vLAN"="=> :set \$vn vlan; :set \$nvn vlanNew; :set \$vid 20; :set \$if ether10; :return [interface vlan set \$vn arp=disabled interface=\$if vlan-id=\$vid name=\$nvn]";

Переменные:
$vn - имя vLan, который изменяем
$nvn - новое имя vLan
$vid - новый ID vLan
$if - новое имя интерфейса vLan

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

Удаление vLAN

"del vLAN"="=> :set \$vn vlan; interface vlan remove \$vn";

Переменные:
$vn - имя vLan, который удаляем


В меню Терминала появятся соответствующие кнопки. При нажатии, команда вставится в поле ввода, где нужно будет изменить значения переменных и отправить боту.


-13-
Сообщения: 124
Зарегистрирован: 18 мар 2021, 12:45

В инструкции похоже забыли указать наполнение для скрипта Deploy.
teMainBot импортирую, запускаю созданный скрипт, файлы из корня устройства не импортируются.
может что не так делаю?

upd: нашел Deploy в папке setup :smu:sche_nie:
Последний раз редактировалось -13- 23 авг 2022, 12:39, всего редактировалось 2 раза.


Inner
Сообщения: 248
Зарегистрирован: 01 июл 2020, 16:02

Brook писал(а): 23 авг 2022, 11:18
Inner писал(а): 23 авг 2022, 08:32
Добавьте, пожалуйста, возможность рулить vLan (создавать, удалять, изменять, вкл/выкл) и, мне кажется, это будет идеал.
Большое спасибо за отзыв. По поводу vLan обязательно подумаю, как это можно сделать красиво.
Сейчас vLanы отображаются в группе интерфейсов и там их можно вкл/выкл.

А пока, добавить новый, отредактировать или удалить можно добавлением шаблонов команд в меню Терминала
Ниже прописал такие команды. Их надо добавить в массив dbaseCommands.rsc и нажать Run script


 Команды Терминала

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

Добавление vLan

"add vLAN"="=> :set \$vn vlan; :set \$vid 20; :set \$if ether10; :return [interface vlan add name=\$vn arp=enabled vlan-id=\$vid interface=\$if]";

Переменные:
$nvn - имя нового vLan
$vid - ID нового vLan
$if - имя интерфейса нового vLan

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

Изменение vLAN

"set vLAN"="=> :set \$vn vlan; :set \$nvn vlanNew; :set \$vid 20; :set \$if ether10; :return [interface vlan set \$vn arp=disabled interface=\$if vlan-id=\$vid name=\$nvn]";

Переменные:
$vn - имя vLan, который изменяем
$nvn - новое имя vLan
$vid - новый ID vLan
$if - новое имя интерфейса vLan

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

Удаление vLAN

"del vLAN"="=> :set \$vn vlan; interface vlan remove \$vn";

Переменные:
$vn - имя vLan, который удаляем


В меню Терминала появятся соответствующие кнопки. При нажатии, команда вставится в поле ввода, где нужно будет изменить значения переменных и отправить боту.
Да. Оно и было нужно. Шикардятина. Но на всякий случай уточню. Под интерфесом воспринимаются вообще все интерфейсы? Или есть ограничения на бриджи, физические, виртуальные?


Ответить