Netwatch mikrotik настроить telegram
Бесплатный чек-лист
по настройке RouterOS
на 28 пунктов
управление с телеги
На днях сдружил свои железки с телеграм, научился запускать скрипты и получать вывод..Подскажите, есть ли возможность отправлять именно команды (как в терминале) и получать ответ например в переменную? ну а дальше думаю смогу уже прикрутить и к телеге Я реализовал управление с андройд-смарфтона виджетами termux. Но работает только в пределах локальной сети, так как нет белого айпи.
• Кому интересно управление микротиками с помощью телеграмм, решил написать простенький мануальчик. Я и сам недавно только научился, протестировал, а теперь вот делюсь опытом, еще и телеграмм апиай официально разблокировали, так что вообще красота..
Управление сводится к отправке в группу телеграмм команды для определенного тика (в команде присутствует имя, необходимого для запуска скрипта), микрот в свою очередь по шедулеру выполняет чтение поступившей для него команды, и запускает заранее созданный скрипт.
Скриптов можно придумать сколько угодно на все случаи жизни, вот несколько примеров с описанием и содержимым:
telega_test
ping
log_print
wol_my_pc - включает комп, который подключен напрямую к данному микротику и мак адрес которого прописан в скрипте
для активации отправляем: /mikrotik wol_my_pc
wol_my_pc (поменяйте название интерфейса и мак адрес на свои)
telega_clean - скрипт очистки глобальной переменной content, часто помогает при отказе работы главного скрипта, в очищенном виде переменная content содержит <"ok":true,"result":[]>данный скрипт запускается вручную, либо по шедулеру (например раз в час)
Необходимо узнать токен бота и айди чата для использования скриптов.
Прошивка микротика v6.46.3 или выше. Если у вас ниже, то гарантии нет что будет работать.
Для корректной работы не одного, а нескольких тиков в одной группе телеграмм, перед каждой командой пишется название тика (Identity) которому адресована команда либо "all", чтобы команда выполнилась на всех тиках. Чтобы не держать в голове все имена и команды, можно добавить шаблоны в свою группу телеграмм через бота BotFather, для этого пишем ему (БотФазеру) команду:
выбираете своего бота и пишите список команд по шаблону: tik1_wol_my_pc - tik1 my pc ontik1_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
это будет основной скрипт для чтения телеграмм на наличие новых команд
Запихиваем в него содержимое (не забывая поменять айдишки в первых двух строках на свои):
Сегодня я хотел бы рассказать о том, как реализовать отправку событий из Mikrotik в чат telegram.
Ни для кого не секрет, что Telegram, на данный момент, является самым быстрым мессенджером в мире, а мы все хотим получать оповещения о событиях максимально оперативно, отсюда и родилась идея данной статьи.
Первое, что нам нужно сделать – создать собственного бота telegram.
Делается это довольно просто:
- Находим в поиске аккаунт с именем @botfather
- Нажимаем на кнопку Start в нижней части экрана
- После чего пишем ему команду /newbot
- Потом отвечаем на 2 несложных вопроса:
Первый вопрос – имя создаваемого бота Test1splaBot
Второй вопрос – ник создаваемого бота (должен оканчиваться на bot) Test_1spla_bot
- В ответ получим токен нашего бота, в моём случае, это 153358077:AAF4qYdUNIcWfp-SLtduVR18DuzqtXwEQAs
Затем, нужно найти нашего бота в поиске по имени @Test_1spla_bot и нажать на кнопку Start, чтобы его запустить.
После этого нужно создать групповой чат в telegram.
Делается это довольно просто:
- Нажимаем “Next”.
- Указываем название нашего чата, например, “Test_1spla_support”.
- Приглашаем нашего бота в данный чат, напомню, найти его теперь можно по имени @Test_1spla_bot
Итак, к данному моменту у нас есть бот, он активирован и приглашён в наш чат. Но он молчит.
Для того, чтобы заставить его говорить необходимо:
Где XXXXXXXXXXXXXXXXXX – токен вашего бота
Находим на ней следующий текст:
ИД групповых чатов начинаются с минуса, именно этот id нам и нужен.
Токен бота: 153358077:AAF4qYdUNIcWfp-SLtduVR18DuzqtXwEQAs
ID чата, куда он должен писать: -175202495
Отличаются они только экранированием знака ? в URL.
По сути всё, скрипт отправки в чат готов и вы можете применять его в своих скриптах, в утилите NetWatch и многих других.
Если вы системный администратор или IT-директор, то у нас есть партнёрская программа с очень интересными предложениями по взаимовыгодному сотрудничеству.
С подробностями вы можете ознакомиться у нашего онлайн-консультанта, оставив контакты через форму обратной связи или позвонив по телефону (812) 425-12-19.
Если вам нужна помощь в настройке оповещений с оборудования или серверов, наши специалисты всегда готовы вам помочь.
Статью подготовил технический директор компании Первый Сервисный Провайдер Гавриш Артём.
Я решил написать такого бота.
Итак, первое, что нужно сделать – это создать бота в telegram.
- Находим в поиске аккаунт с именем @botfather
- Нажимаем на кнопку Start в нижней части экрана
- После чего пишем ему команду /newbot
- Первый вопрос – имя создаваемого бота MyMikrotikROuter
- Второй вопрос – ник создаваемого бота (должен оканчиваться на bot) MikrotikROuter_bot
Затем, нужно найти нашего бота в поиске по имени @MikrotikROuter_bot и нажать на кнопку Start.
После этого нужно открыть браузер и ввести следующую строку:
Где XXXXXXXXXXXXXXXXXX – токен вашего бота.
Откроется страница примерно следующего вида:
Находим на ней следующий текст:
Итак, у нас есть вся необходимая информация для написания скриптов для Mikrotik'а, а именно:
Токен бота: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4
ID чата, куда он должен писать: 631290
Для проверки можем зайти через браузер:
Должны получить результат:
Для нашего удобства, сразу добавим команды для бота:
Находим аккаунт с именем @botfather
После чего пишем ему команду /setcommands
- helloworld< — Test message on chat 1
- itsworking — Test Message on chat 2
- wolmypc — wake Up my PC
Теперь переходим к MikroTik.
Открываем terminal и вводим:
Обратите внимание в MikroTik необходим "\" для экранирования знака "?" в URL.
Должны получить результат:
Теперь переходим к сриптам:
Не забываем указать правильный mac и имя интерфейс, а так же bot-token и chat_id.
Сейчас немного поясню что они делаю:
Создаем задание:
непонятно почему но из рабочего скрипта не оглашает глобальные данные, добавил скрипт при загрузке системы.
Telegram-startup
Как это работает
P.S. Огромное спасибо Кириллу Казакову за идею и моему другу Александру за помощь со скриптами.
Ссылки
Добавил проверку на chat_id
Проверка на дурака, если кто то напишет нашему боту, он ответит ему: " I can't talk with you. ", аналогично ответит нам, если не распознает команду.
По выполнению команды, бот отписывается в чат (см. Скрипт wolmypc)
Нашли с 7Stuntman7 что файл с выше
К подключению резервного интернет канала дома каждый приходит по своим причинам, но некоторые устройства в умном доме требуют постоянного подключения к сети интернет, оперативность получения важных уведомлений напрямую зависит от стабильности подключения к тому же, как же мы узнаем, что интернет пропал, не имея резервного канала :)
Какой тип подключения выбрать в качестве резервного зависит только от желания, финансовой и технической возможности. Требования к скорости не большие и зависит от того, каким устройствам необходим постоянный доступ к сети. Если не использовать постоянный доступ для торрент обмена, то в качестве резервного канала можно использовать USB LTE модем с лимитированным трафиком.
Имеется MikroTik RB4011 с настройками:
- Основной интернет канал 100МБит, внешний IP, интерфейс ether1
- Резервный интернет канал 10МБит, интерфейс ether2
- OpenVPN подключение к внешней VPS, интерфейс vpn-ovpn
- Туннель 6to4 для IPv6 трафика, v6to4-tunnel
Необходимо при разрыве основного канала пустить весь трафик по резервному, переподключить VPN, погасить туннель 6to4 и прислать уведомление в телеграмм.
Настройка
Для удобства переименовываем названия портов ether1 и ether2 в ether1-wan-main и ether2-wan-reserv
Если IP адреса для основного и/или резервного канала прилетают по DHCP, то в настройках DHCP Сlient'а необходимо для каждого интерфейса выставить параметр Add Default Route - no .
Добавляем маршруты по умолчанию, маршрут основного канала будет иметь дистанцию (distance) 1, резервного 2:
где: gateway=100.99.88.1 - шлюз для основного канала, gateway=10.9.8.1 - шлюз для резервного канала. Неактивный маршрут резервного канала будет выделен синим цветом.
Для мониторинга состояния каналов будет задействована утилита Netwatch (Tools -> Netwatch), в качестве хостов наблюдения будут использованы DNS сервера Яндекс, адрес 77.88.8.8 будет использоваться для проверки работоспособности основного канала, 77.88.8.1 - для резервного.
Добавляем отдельные маршруты для проверяемых адресов, что бы проверка шла четко по определенному интернет каналу не зависимо от того через какой канал идет маршрут по умолчанию.
В Firewall (IP -> Firewall) добавляем запрещающие правила на прохождение пакетов к проверяемым адресам не через свой канал, на случай, если канал отсохнет, то маршрут использующий этот канал станет не активным и будет задействован текущий маршрут по умолчанию. Эти правила необходимо расположить выше правил разрешающих доступ в интернет.
Мониторинг и переключение каналов
Как говорилось выше, в качестве мониторинга будет использоваться утилита Netwatch . Настройка этой утилиты крайне проста, задается хост наблюдения и интервал через какое время необходимо выполнять проверку, при переходе наблюдаемого хоста из состояния Down в состояние Up выполняются скрипты с вкладки UP , при переходе из состояния Up в состояние Down выполняются скрипты с вкладки DOWN .
Для проверки основного канала в Netwatch добавляем (Tools -> Netwatch -> +).
- Host: 77.88.8.8
- Interval: 00:01:00
- Timeout: 1000
Каждую минуту происходит проверка хоста с IP адресом 77.88.8.8, как только происходит смена состояния из доступен в недоступен, то начинается обработка скрипта, описанного на вкладке DOWN. Комментарии:
Аналогичная ситуация происходит на вкладке UP при переходе хоста с IP адресом 77.88.8.8 из состояния Down в состояние Up.
Для проверки резервного канала в Netwatch добавляем (Tools -> Netwatch -> +).
- Host: 77.88.8.1
- Interval: 00:01:00
- Timeout: 1000
Действия в случае неполадок с резервным каналом аналогичные, как и для основного, не затрагивается только 6to4 туннель.
Освоить MikroTik вы можете с помощью онлайн-курса «Настройка оборудования MikroTik». В курсе изучаются все темы из официальной программы MTCNA. Автор – официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто еще не держал его в руках. В состав входят 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.В целом принцип работы не изменился, с той лишь разницей, что теперь он отрабатывает мгновенно без задержек.
Закидываем скрипт в Mikrotik, меняем BotID и ChatID на свои и создаем на него schedule. Ставим параметр «Start Time» на startup (Запуск скрипта при старте.)
«Interval»: 00:00:00
В остальном все как и было.
:delay 10
:global mtIdentity [/system identity get name];
:global botID «botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXX»;
:global myChatID «YYYYYY»;
:local chatId 0;
:local messageId 0;
За пару лет пользования был выявлен баг, по непонятным причинам слабенькие Mikrotik почему то останавливают скрипт, на более мощных работает без остановок.
Для этих целей накидал костыль WatchDog. тут меняем имя скрипта на то какое указывали выше. и ставим интервал перезапуска 5 минут. Каждые 5 минут наша «смотрящая собака» будет проверять скрипт, и если он не работает, то запустит его.
:global scriptname «t.me»:if ([:len [/system script job find script=$«scriptname»]] > 0) do= :log info "$scriptname Already Running — killing old script before continuing"
:foreach counter in=[/system script job find script=$«scriptname»] do= /system script job remove $counter
>
>
/system script run $scriptname
Ну и на десерт, скрипт взят с форума Mikrotik.
Отправляет важные топики из лога нам в телегу.
Закидываем скрипт в schedule и указываем интервал перезапуска каждые 5 минут, меняем BotID и ChatID на свои.
:global lastTime
:global output
:global mtIdentity [/system identity get name];
:global botID «botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXX»;
:global myChatID «YYYYYY»;
:local LogGet [ :toarray [ /log find topics
«login failure» || message
"[Ff]ailure" ] ];
:local LogtLineCount [ :len $LogGet ];
if ($LogtLineCount > 0) do= :local currentTime "$[ /log get [ :pick $LogGet ($LogtLineCount -1) ] time ]";
:if ([:len $currentTime] = 10 ) do= :set currentTime [ :pick $currentTime 0 10 ];
>
:set output "$currentTime — $[/log get [ :pick $LogGet ($LogtLineCount-1) ] message ]";
:if (([:len $lastTime] < 1) || (([:len $lastTime] > 0) && ($lastTime != $currentTime))) do= :set lastTime $currentTime;
:tool fetch url=(«api.telegram.org$botID/sendmessage\?chat_id=$myChatID&text=\»$mtIdentity\": $output") keep-result=no
>
>
Получим результат:
Читайте также: