оповещение в телегу

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

Sertik писал(а): 14 сен 2023, 12:57 Кстати, раз Вы это всё делаете для Телеги, то Вы практически создали свою собственную библиотеку скриптов, подобную моей SATELLITE
(viewtopic.php?f=14&t=13648), только лучше !
Вы могли бы поделиться этим с сообществом, если хотите. Ну или сделайте это тогда, когда будете считать работу завершенной на каком-то этапе. Сделайте отдельный топик. Желаю успехов !
Вашу модульность возьму на заметку, может сам перейду на что-то подобное.
может как нибудь осилю установочный скрипт, а пока это просто хобби


Sertik
Сообщения: 1657
Зарегистрирован: 15 сен 2017, 09:03

Хобби хорошее, можно только приветствовать. Главное в этом вопросе - стабильность. Продолжайте, мы радуемся Вашим успехам и желаем дальнейших ! Скриптописателей сейчас мало - настоящие программисты заняты вероятно на основной работе - им некогда. Кто-то появляется, напишет что-нибудь и исчезает в никуда. Так что всегда хорошо, когда в семье есть прибавление. :-):

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 и ему будет удобно их дифференцировать со своими, а также он увидит и комментарии к ним.

Удачи !


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Brond
Сообщения: 19
Зарегистрирован: 09 фев 2018, 12:03

Добрый день,
Есть скрипт отправки уведомления на почту 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");
}
Подскажите пожалуйста где ошибка?


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

замените в коде

:set $ipList ($ipList . "%0A" . [/ip firewall address-list get $tmpAddress value-name=address]);


Brond
Сообщения: 19
Зарегистрирован: 09 фев 2018, 12:03

Спасибо!
Исправленый код

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

: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");
}
}


Sertik
Сообщения: 1657
Зарегистрирован: 15 сен 2017, 09:03

Если убрать всё ненужное, то получится так:

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

: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"
}
}


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Brond
Сообщения: 19
Зарегистрирован: 09 фев 2018, 12:03

Работает, спасибо!


DmSp
Сообщения: 9
Зарегистрирован: 24 сен 2024, 14:04

Всем привет!
Ищу рабочий скрипт отправки логов в телеграм.
для ROS 7.15
с обработкой/отправкой всех строк лога, а не только последнего.
и без сложных систем управления роутером типа Таран.

попробовал пару найденных на форуме - не работают.
вроде все темы перечитал.
Спасибо!


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

Вот не плохой вариант. Скрипт работает в фоне, пока его не выключить в 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, можно и свою прикрутить.


DmSp
Сообщения: 9
Зарегистрирован: 24 сен 2024, 14:04

Спасибо! Очень красивый и лаконичный код.
К сожалению я не программист и мне там ничо непонятно :ne_vi_del:
Если Вас не затруднит хочу попросить Вас
1. вставить функцию отправки в код.
2. как правильно задать фильтр по Topics "error/ warning/ critical", чтобы в тг присылалсь только они?
3. вот эти вот фоновые задания Jobs - скрипт сам стартует в случае перезагрузки или как его добавить в планировшик?
4. права на скрипт какие выставлять?

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


hap AC2 / ROS 7.15.2
Ответить