Страница 13 из 16
Re: оповещение в телегу
Добавлено: 14 сен 2023, 13:23
-13-
Sertik писал(а): ↑14 сен 2023, 12:57
Кстати, раз Вы это всё делаете для Телеги, то Вы практически создали свою собственную библиотеку скриптов, подобную моей SATELLITE
(
viewtopic.php?f=14&t=13648), только лучше !
Вы могли бы поделиться этим с сообществом, если хотите. Ну или сделайте это тогда, когда будете считать работу завершенной на каком-то этапе. Сделайте отдельный топик. Желаю успехов !
Вашу модульность возьму на заметку, может сам перейду на что-то подобное.
может как нибудь осилю установочный скрипт, а пока это просто хобби
Re: оповещение в телегу
Добавлено: 14 сен 2023, 13:37
Sertik
Хобби хорошее, можно только приветствовать. Главное в этом вопросе - стабильность. Продолжайте, мы радуемся Вашим успехам и желаем дальнейших ! Скриптописателей сейчас мало - настоящие программисты заняты вероятно на основной работе - им некогда. Кто-то появляется, напишет что-нибудь и исчезает в никуда. Так что всегда хорошо, когда в семье есть прибавление.
P/S установочный скрипт это недолго. Раз у Вас все скрипты в репозитории делается просто (мой метод):
пишите маленький установочный скрипт, в котором глобальные настройки и стартап.
сохраняете копию репозитория /system script export file=backup.rsc
Потом удаляете смело все лишние скрипты.
Создаёте нового юзера под именем Вашей будущей биллиотеки.
Заходите под ним.
Каждый скрипт открываете, добавляете пробел и стираете, сохраняете. Он сохранится под owner нового юзера. Ну и комментарий скрипту можно добавить соответствующий.
Затем делаете /system script export file=myScriptLib.rsc
Всё !
Стираете все скрипты и делаете /import file=backup.rsc (это может занять несколько минут, дождитесь successful !)
Когда пользователь сделает на своём роутере /import file=myScriptLib.rsc он увидит все Ваши скрипты под новым owner и ему будет удобно их дифференцировать со своими, а также он увидит и комментарии к ним.
Удачи !
Re: оповещение в телегу
Добавлено: 18 сен 2023, 15:16
Brond
Добрый день,
Есть скрипт отправки уведомления на почту ip адрес при попадании их в Adress list он работает.
mail
Код: Выделить всё
:log info message=("Start Sending Report");
:local ipList value="";
:foreach tmpAddress in=[/ip firewall address-list find where dynamic=yes and list=BlackListWinbox] do={
:set $ipList value=([/ip firewall address-list get $tmpAddress value-name=address]."\r\n".$ipList);
}
:if ($ipList != "") do={
/tool e-mail send from="mikrotik01@fcom.ru" to="warning@fcom.ru" subject=("BlackListWinbox ".[/system clock get date]." ".[/system clock get time]) body=("Auto-blacklisted host:\r\n".$ipList)
:log info message=("Sending Report End");
}
Хочу переделать отправку в телеграм, но из-за $ipList сообщение не оправляется.
Telegram
Код: Выделить всё
:log info message=("Start Sending Report");
:local ipList "";
:local hasEntries false;
:foreach tmpAddress in=[/ip firewall address-list find where dynamic=yes and list=BlackListWinbox] do={
:set ipList ($ipList . "\r\n" . [/ip firewall address-list get $tmpAddress value-name=address]);
:set hasEntries true;
}
:if ($hasEntries) do={
:local messageBody ("List of auto-blacklisted host:\r\n" .$ipList);
/tool fetch url=("https://api.telegram.org/bot1003412305:AAE_XIDNKAXWBYE9J33JААRB0U2FP2LbE/sendmessage?chat_id=-4178532902&text= .$messageBody") mode=https keep-result=no
:log info message=("Sending Report End");
}
Подскажите пожалуйста где ошибка?
Re: оповещение в телегу
Добавлено: 18 сен 2023, 15:48
-13-
замените в коде
:set $ipList ($ipList . "%0A" . [/ip firewall address-list get $tmpAddress value-name=address]);
Re: оповещение в телегу
Добавлено: 18 сен 2023, 16:29
Brond
Спасибо!
Исправленый код
Код: Выделить всё
:log info message=("Start Sending Report");
:local ipList "";
:local hasEntries false;
:foreach tmpAddress in=[/ip firewall address-list find where dynamic=yes and list=BlackListWinbox] do={
:set $ipList ($ipList . "%0A" . [/ip firewall address-list get $tmpAddress value-name=address]);
:set hasEntries true;
}
:if ($hasEntries) do={
:local messageBody ("List of auto-blacklisted host:%0A" .$ipList);
/tool fetch url=("https://api.telegram.org/bot1003412305:AAE_XIDNKAXWBYE9J33JААRB0U2FP2LbE/sendmessage?chat_id=-4178532902&text= .$messageBody") mode=https keep-result=no
:log info message=("Sending Report End");
}
}
Re: оповещение в телегу
Добавлено: 18 сен 2023, 20:38
Sertik
Если убрать всё ненужное, то получится так:
Код: Выделить всё
:log info "Start Sending Report"
:local ipList
:local hasEntries false
:foreach tmpAddress in=[/ip firewall address-list find where dynamic=yes and list=BlackListWinbox] do={
:set $ipList ($ipList . "%0A" . [/ip firewall address-list get $tmpAddress address])
:set hasEntries true
}
:if ($hasEntries) do={
:local messageBody ("List of auto-blacklisted host:%0A" .$ipList)
/tool fetch url=("https://api.telegram.org/bot1003412305:AAE_XIDNKAXWBYE9J33JААRB0U2FP2LbE/sendmessage?chat_id=-4178532902&text= .$messageBody") mode=https keep-result=no
:log info "Sending Report End"
}
}
Re: оповещение в телегу
Добавлено: 19 сен 2023, 16:19
Brond
Работает, спасибо!
Re: оповещение в телегу
Добавлено: 12 окт 2024, 04:07
DmSp
Всем привет!
Ищу рабочий скрипт отправки логов в телеграм.
для ROS 7.15
с обработкой/отправкой всех строк лога, а не только последнего.
и без сложных систем управления роутером типа Таран.
попробовал пару найденных на форуме - не работают.
вроде все темы перечитал.
Спасибо!
Re: оповещение в телегу
Добавлено: 12 окт 2024, 14:20
Brook
Вот не плохой вариант. Скрипт работает в фоне, пока его не выключить в
Jobs. Внутри можно замутить проверку, что отправляем, а что нет. В текущем варианте отправляет все по мере появления.
Код: Выделить всё
:global EventHandler do={
:global teSendMessage
:local oneFeed "%0D%0A"
:local logDefaultPicture "\F0\9F\93\84"
:local chatID "-100234567890"
:local messageText "$logDefaultPicture <b>$1 - $2 - $3</b> $oneFeed$oneFeed$4 $oneFeed"
:if ([:len $1] != 0) do={
$teSendMessage fChatID=$chatID fText=$messageText
}
:return 0
}
log/print follow-only where [$EventHandler $time $topics $buffer $message]
chatID - чат или группа, куда будут отправляться сообщения.
teSendMessage - функция отправки сообщения в телеграм, есть в моем посте
Телеграмма для Mikrotik, можно и свою прикрутить.
Re: оповещение в телегу
Добавлено: 12 окт 2024, 22:34
DmSp
Спасибо! Очень красивый и лаконичный код.
К сожалению я не программист и мне там ничо непонятно
Если Вас не затруднит хочу попросить Вас
1. вставить функцию отправки в код.
2. как правильно задать фильтр по Topics "error/ warning/ critical", чтобы в тг присылалсь только они?
3. вот эти вот фоновые задания Jobs - скрипт сам стартует в случае перезагрузки или как его добавить в планировшик?
4. права на скрипт какие выставлять?
п.с. модульная структура это правильно, если использовать много скриптов от одного производителя. мне много не надо. копировать-вставить один скрипт и будет счастье. и жаль, что ваш проект закрылся.