Настройка Телеграмм бота mikrotik

Обнаружена блокировка рекламы: Наш сайт существует благодаря показу онлайн-рекламы нашим посетителям. Пожалуйста, подумайте о поддержке нас, отключив блокировщик рекламы на нашем веб-сайте.

управление с телеги

Здесь выкладываем скрипты

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

  • Перейти на страницу:

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

MikroTik Telegram bot


Подскажите, есть ли возможность отправлять именно команды (как в терминале) и получать ответ например в переменную? ну а дальше думаю смогу уже прикрутить и к телеге

Я реализовал управление с андройд-смарфтона виджетами termux. Но работает только в пределах локальной сети, так как нет белого айпи.

• Кому интересно управление микротиками с помощью телеграмм, решил написать простенький мануальчик. Я и сам недавно только научился, протестировал, а теперь вот делюсь опытом, еще и телеграмм апиай официально разблокировали, так что вообще красота..
Управление сводится к отправке в группу телеграмм команды для определенного тика (в команде присутствует имя, необходимого для запуска скрипта), микрот в свою очередь по шедулеру выполняет чтение поступившей для него команды, и запускает заранее созданный скрипт.
Скриптов можно придумать сколько угодно на все случаи жизни, вот несколько примеров с описанием и содержимым:

telega_test — скрипт, который просто присылает в ответ сообщение и тем самым мы видим что микрот работает и на нем есть интернет
для активации отправляем: /mikrotik telega_test
где «mikrotik» имя роутера по Identity

telega_test

# script by Virtue :local botID «bot1000099999:AAAAx0xXxxXXXXx_XXX0xXxX0XxxXxxXxxx» :local chatID «-990009999» :local name [/system identity get name] :local a [/sys clock get date] :local b [/sys clock get time] /tool fetch keep-result=no url=(«https://api.telegram.org/».$botID.»/sendmessage?chat_id=».$chatID.»)

ping — скрипт, пингующий заданный узел и возвращающий нам количество полученных ответов (можно указывать как айпи, так и хост адрес), 5 запросов-ответов считаю достаточным
для активации отправляем например: /mikrotik ping ya.ru

ping

# script by Virtue :local botID «bot1000099999:AAAAx0xXxxXXXXx_XXX0xXxX0XxxXxxXxxx» :local chatID «-990009999» :local name [/system identity get name] :global pingaddr :local pingresult («ping».» «.$pingaddr.» «.[ping address=$pingaddr count=5].»/5») :tool fetch keep-result=no url=(«https://api.telegram.org/».$botID.»/sendmessage?chat_id=».$chatID.»)

log_print — присылает логи, команду отправлять с числом, которое указывает, сколько строк из лога мы хотим увидеть (в телеграмме есть ограничения по количеству символов в 1 сообщении, по этому очень много строк отправить не получится) у меня на разных микротах максимальное число строк тоже разное, это может быть и 40, и 80, но обычно нужно посмотреть только самые последние логи, по этому хватает и 10ти. Если лимит будет превышен, то в ответ просто ничего не придет

Еще по теме:  Гет контакт для Телеграмма

Уведомления в telegram с вашего роутера mikrotik | UnixHost


для активации отправляем например: /mikrotik log_print 10
если нужно получить например 20, пропустив при этом 50 последних строк лога, команда будет: /mikrotik log_print 20 50

log_print

# script by Virtue :local botID «bot1000099999:AAAAx0xXxxXXXXx_XXX0xXxX0XxxXxxXxxx» :local chatID «-990009999» :local name [/system identity get name] :local LogsAll [/log print count-only] :local LogsScan [/log find] :local counter 0 :local log1 :global otstup :global logs :if ($otstup ~ «[a-z|A-Z|_-|+/|*?]») do= :foreach i in=$LogsScan do=< :if (($counter >= ($LogsAll — $otstup — $logs)) and ($counter < ($LogsAll — $otstup))) do=< :local Log1Time [/log get $i time] :local Log1Message [/log get $i message] :if ([/log get $i message] ~ «[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]») do=< :foreach k in=[/ip dhcp-server lease find] do=< :local mac [/ip dhcp-server lease get $k value-name=mac-address] :if ([/log get $i message] ~ «$mac») do=< :set Log1Message ($Log1Message . » / » . [/ip dhcp-server lease get $k value-name=comment]) >> > :set log1 ($log1.»|».$Log1Time.» «.$Log1Message.»%0A») > :set counter ($counter + 1) > :set otstup 0 /tool fetch keep-result=no url=(«https://api.telegram.org/».$botID.»/sendMessage?chat_id=».$chatID.»)

wol_my_pc — включает комп, который подключен напрямую к данному микротику и мак адрес которого прописан в скрипте
для активации отправляем: /mikrotik wol_my_pc

wol_my_pc (поменяйте название интерфейса и мак адрес на свои)

# script by Virtue /tool wol interface=bridge3-lan mac=00:11:22:22:11:00

telega_clean — скрипт очистки глобальной переменной content, часто помогает при отказе работы главного скрипта, в очищенном виде переменная content содержит <«ok»:true,»result»:[]>
данный скрипт запускается вручную, либо по шедулеру (например раз в час)

# script by Virtue :global content :if ([:len $content] > 23 ) do=< :local botID «bot1000099999:AAAAx0xXxxXXXXx_XXX0xXxX0XxxXxxXxxx» :set content [/tool fetch url=(«https://api.telegram.org/».$botID.»/getUpdates») as-value output=user] :set content ($content ->»data») while ([:len $content] > 23 ) do= < :local startLoc [:find $content «update_id» -1 ] :set startLoc ( $startLoc + 11 ) :local endLoc [:find $content «,» $startLoc] :local messageId ([:pick $content $startLoc $endLoc] + (1)) :tool fetch keep-result=no url=(«https://api.telegram.org/».$botID.»/getUpdates?offset=$messageId») :delay 3 >>

Можете использовать все эти скрипты, либо какие-то из них, либо написать еще. Мануальчик подразумевает что вы уже создали и активировали бота, через которого будете отправлять и получать команды, а также добавили его в отдельно созданную группу, как это сделать можете посмотреть тут: https://1spla.ru/blog/telegram_bot_for_mikrotik/

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

Для корректной работы не одного, а нескольких тиков в одной группе телеграмм, перед каждой командой пишется название тика (Identity) которому адресована команда либо «all», чтобы команда выполнилась на всех тиках. Чтобы не держать в голове все имена и команды, можно добавить шаблоны в свою группу телеграмм через бота BotFather, для этого пишем ему (БотФазеру) команду:

/setcommands
выбираете своего бота и пишите список команд по шаблону:

tik1_wol_my_pc — tik1 my pc on
tik1_telega_test — proverka svyazi tik1
tik1_log_print_10 — last logs
tik1_ping — ping addr or ip
tik2_log_print_10 — last logs
tik2_wol_my_pc — tik2 my pc on
tik3_log_print_10 — last logs
tik4_log_print_10 — last logs
all_log_print_10 — last logs

Буквы обязательно все латинские и маленькие, а также левая часть (сама команда) не содержит пробелов.
Теперь, нажав на кнопку «/» в своём чате с ботом, всегда можно посмотреть, какие команды (скрипты) и на каких устройствах нам доступны.

Еще по теме:  Телеграм показывает пропущенный звонок а вызова нет

Бота создали, группу создали, добавили туда бота, токен бота записали, айди чата группы записали, скрипты подготовили, теперь создаем скрипт, например с именем — Telegram
это будет основной скрипт для чтения телеграмм на наличие новых команд
Запихиваем в него содержимое (не забывая поменять айдишки в первых двух строках на свои):

Telegram

# script modified by Virtue :local botID «bot1000099999:AAAAx0xXxxXXXXx_XXX0xXxX0XxxXxxXxxx» :local chatID «-990009999» :global content [/tool fetch url=(«https://api.telegram.org/».$botID.»/getUpdates») as-value output=user] :set content ($content ->»data») :if ([:len $content] > 23 ) do= < :local startLoc [:find $content «update_id» -1 ] :set startLoc ( $startLoc + 11 ) :local endLoc [:find $content «,» $startLoc] :local messageId ([:pick $content $startLoc $endLoc] + (1)) :set startLoc [:find $content «text» -1 ] :set startLoc ( $startLoc + 7 ) :set endLoc [:find $content «,» ($startLoc)] :set endLoc ( $endLoc — 1 ) :local message [:pick $content ($startLoc + 1) $endLoc] :set startLoc [:find $content «chat» -1 ] :set startLoc ( $startLoc + 12 ) :set endLoc [:find $content «,» $startLoc] :local chatID2 ([:pick $content $startLoc $endLoc]) :if ($chatID2 = $chatID) do=< :if (($message ~ [/system identity get name]) or ($message ~ «all»)) do=< :local neponimat true :foreach i in=[/system script find name~»»] do=< if ($message ~ [/system script get $i name]) do=< :set neponimat false :local ScriptName [/system script get $i name] :if ($ScriptName = «log_print») do=< :local startLoc1 ([:find $message «log_print»] +10) :local endLoc1 ([:find $message «log_print»] +12) :global logs :set logs [:pick $message $startLoc1 $endLoc1] >if ($ScriptName = «ping») do= < :local startLoc2 ([:find $message «ping»] +5) :local endLoc2 ([:find $message «ping»] +20) :global pingaddr :set pingaddr [:pick $message $startLoc2 $endLoc2] >:log info message=»Script $ScriptName zapus4en» /system script run $ScriptName if ($message ~ «all») do= < :delay 55 >:tool fetch keep-result=no url=(«https://api.telegram.org/».$botID.»/getUpdates?offset=$messageId») > > if ($neponimat = true) do= < :tool fetch keep-result=no url=(«https://api.telegram.org/».$botID.»/getUpdates?offset=$messageId») :delay 3 :local name [/system identity get name] :tool fetch keep-result=no url=(«https://api.telegram.org/».$botID.»/sendmessage?chat_id=».$chatID.») >> else= > >
Далее создаем шедулер с интервалом запуска например раз в минуту как у меня и содержимым:
/system script run Telegram

Проверяем, если все сделали правильно, должно работать

примеры команд (где «mikrotik» имя роутера по Identity):

Источник: forummikrotik.ru

Cообщения в Telegram с MikroTik или Linux

Telegram, на данный момент, является самым быстрым мессенджером в мире, а мы все хотим получать оповещения о событиях максимально оперативно.

Создание Бота

Первое, что нам нужно сделать – создать собственного бота telegram:

1. Первый вопрос – имя создаваемого бота TestBot
2. Второй вопрос – ник создаваемого бота (должен оканчиваться на bot) Test_bot

Делается это так:

На данный моменту у нас есть бот, он активирован и приглашён в наш чат. Но он молчит.

Для того, чтобы заставить его говорить необходимо:

Где XXXXXXXXXXXXXXXXXX – токен вашего бота

  1. Откроется страница,находим на ней следующий текст:

ИД групповых чатов начинаются с минуса, именно этот id нам и нужен.

Итак, мы собрали всю необходимую информацию для написания скриптов для Mikrotik’а, а именно:

Токен бота: 354355077:AAF4sYdUNIeWfp-SLtduVR18FuSqtXwEfAs

ID чата, куда он должен писать: –274224795

Настройка скрипта в Mikrotik

В RouterOS есть отличная консольная утилита для копирования файлов через ftp или http/https, утилита называется fetch, именно ей мы и будем пользоваться.

Для удобства, ниже я приведу 2 варианта кода, первый – для скриптов, второй – для написания сообщений при помощи окна терминала.

Еще по теме:  Бот в Телеграмме который иодет вскрыть друзей профиля закрытого

/tool fetch url=”https://api.telegram.org/bot354355077:AAF4sYdUNIeWfp-SLtduVR18FuSqtXwEfAs/sendMessage?chat_id=-274224795text=Bla_bla_bla”

Отличаются они только экранированием знака ? в URL.

Cкрипт отправки в чат готов и вы можете применять его в своих скриптах, в утилите NetWatch и многих других.

Отправка уведомлений из Linux

Микротиком мы не ограничиваемся. Сообщения можно так же отправлять и с серверов на ОС *nix.
Потребуется установить пакет curl:

Теперь пишем любой скрипт с нашими нуждами и фантазией, и по нужным условиям отправляем сообщение через бота:

curl —header ‘Content-Type: application/json’ —request ‘POST’ —data » «https://api.telegram.org/bot283193794:AAFhtВ21ВyAYcdUm7j6YSM11uCLjTvRtC_w/sendMessage»

Где, “240313162” – id чата с нами,
bot283193794:AAFhtВ21ВyAYcdUm7j6YSM11uCLjTvRtC_w – токен бота
” Ваш_текст_сообщения “ – текст сообщения (сюда же можно всунуть любую переменную из скрипта)

Источник: disnetern.ru

MikroTik Scripts: Sending a message to Telegram (function)

If you plan to use a lot of scripts on your MikroTik device and send their results to Telegram. It is not rational to write the procedure for sending a message in each script, the best way would be to place the “send message to Telegram” function in a separate script. And referring to this script as needed.

Now you will have to change the Telegram notification parameters in just one script.

? For the script to work, you must have a Telegram bot Token and a chat ID or a personal ID. Creating a Telegram bot and getting the required IDs is not the topic of this article.

Script “Sending a message to Telegram”

Since the script will be executed from another script, setting the script execution permissions is not required.

The script uses html markup, which markup options Telegram uses can be read – here.

The script accepts the MessageText variable, which contains the message text. MessageText cannot be empty.

If the script is executed without errors, information about sending a message and text are recorded in the MikroTik log.

[System] -> [Scripts] -> [+] -> [Name: MyTGBotSendMessage] -> [Don’t Require Permissions]
:local BotToken «987654321:AAFJIVTAWodBwzGX2CLne6-PK4RFNSy-8OY»; :local ChatID «987654321»; :local ParseMode «html»; :local DisableWebPagePreview True; :local SendText $MessageText; :local tgUrl «https://api.telegram.org/bot$BotToken/sendMessage?chat_id=$ChatIDparse_mode=$ParseMode; /tool fetch http-method=get url=$tgUrl keep-result=no; :log info «Send Telegram Message: $MessageText»;

Script

Calling the “Sending a message to Telegram” script from another script

[System] -> [Scripts] -> [+] -> [Name: SendMessageToTelegram] -> [Policy: read, write, policy, test]

To send a message, you must pass the MessageText parameter to the MyTGBotSendMessage script.

:local DeviceName [/system identity get name]; :local MessageText «F09F9FA2 $DeviceName: italic inline fixed-width code plain text More Scripts»; :local SendTelegramMessage [:parse [/system script get MyTGBotSendMessage source]]; $SendTelegramMessage MessageText=$MessageText;

If, when calling the script, you receive a syntax error or a failure: closing connection: error, the problem may be in the use of MikroTik service characters in the message text, for verification try sending a plain text without special characters or markup characters, in English.

Calling the

? This article discussed the creation of the Send message to Telegram script from Mikrotik. I hope now the use of sending messages to Telegram from MikroTik devices has become clearer. However, if you run into any problems while setting up, feel free to write in the comments. I will try to help.

✅ The script is checked: hAP ac lite [RouterBOARD 952Ui-5ac2nD], RouterOS 6.47.8 (stable).

Источник: mhelp.pro

Рейтинг
( Пока оценок нет )
Загрузка ...