Страница 4 из 16
Re: оповещение в телегу
Добавлено: 27 янв 2021, 16:28
Virtue
max.kalinkin писал(а): ↑27 янв 2021, 14:30
а не пашет (((
куда копать ?
айдишки должны быть вида
:local botID "bot1000075423:AAEYn0eWtjTRKKg_BGF7fQiY5UjrTsdMfhl"
:local chatID "-1001422750080"
как я и писал в первом посту, у вас почемуто я вижу совсем другое, это что? имя бота?а чат айди у вас без минуса?
Re: оповещение в телегу
Добавлено: 27 янв 2021, 16:58
max.kalinkin
Virtue писал(а): ↑27 янв 2021, 16:28
max.kalinkin писал(а): ↑27 янв 2021, 14:30
а не пашет (((
куда копать ?
айдишки должны быть вида
:local botID "bot1000075423:AAEYn0eWtjTRKKg_BGF7fQiY5UjrTsdMfhl"
:local chatID "-1001422750080"
как я и писал в первом посту, у вас почемуто я вижу совсем другое, это что? имя бота?а чат айди у вас без минуса?
Спасибо !!! нашел толковую доку и все заработало
еще раз спасибо !
Re: оповещение в телегу
Добавлено: 28 янв 2021, 09:40
Sertik
При парсинге лога оперировать временем в Микротик это плохо, из-за кривой реализации времени логирования разработчиками Микротик.
Данный материал обсужден детально тут:
https://habr.com/ru/post/532086/
Автор статьи указывает, что для корректной работы парсера лучше использовать .id событий в логе.
Там же приводится хороший вариант парсера лога автора, в том числе с выдачей новых сообщений в Телеграмм.
Re: оповещение в телегу
Добавлено: 18 фев 2021, 09:47
drpioneer
Virtue писал(а): ↑23 сен 2020, 14:48
При наличии комментарий статик дхцп лесс записей, маки, содержащиеся в логах, будут присылаться с этими комментариями.
Для отключения отслеживания вайфай подключений, стираем из кода
$topics ~"wireless"
Добрый день, уважаемый
Virtue!
Недавно начал пользоваться твоим скриптом - очень удобная штука! Спасибо за твои труды!
Возникло пожелание к работе скрипта: Можно ли сделать, чтобы оповещения ~WIRELESS (~CAPS) отправлялись ТОЛЬКО в случае подключения нового клиента, не прописанного в DHCP LEASES ?
Заранее спасибо.
Re: оповещение в телегу
Добавлено: 18 фев 2021, 18:00
Virtue
drpioneer писал(а): ↑18 фев 2021, 09:47
Добрый день, уважаемый
Virtue!
Здравствуйте, а не проще ли в вашем случае занести маки своих вайфай устройств в строку скрипта для исключений?
Re: оповещение в телегу
Добавлено: 18 фев 2021, 22:12
drpioneer
Virtue писал(а): ↑18 фев 2021, 18:00
а не проще ли в вашем случае занести маки своих вайфай устройств в строку скрипта для исключений?
Если б речь шла о единицах wifi-клиентов, тогда занёс бы и вопросов не задавал.
В моем случае речь идёт о десятках wifi-клиентов на роутерах в разных локациях.
Проблему решил.
Код ниже:
Код: Выделить всё
# Telegram notification script by Virtue
# https://forummikrotik.ru/viewtopic.php?f=14&t=12043
# tested on ROS 6.48
# updated 2021/02/18
:do {
:local botID "bot1111111111:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
:local chatID "-111111111";
:local nameID [/system identity get name];
:delay 10;
:local timeNow [/system clock get time];
:local logs;
:if ([:pick $timeNow 0 2] < 03) do={
:local date [/system clock get date];
:foreach h in=[/log find] do={
:local htime [/log get $h time];
:if (($htime ~ [:pick $date 0 6]) and ([:pick $htime 7 15] > ($timeNow - 00:01:00))) do={ :set logs ($logs, $h); }
}
} else={ :set logs [/log find time >= ($timeNow - 00:01:00)]; }
:if ([:len $logs] > 0 ) do={
:local messages;
:local presence false;
:foreach i in=$logs do={
:local imessage [/log get $i message];
:local topics [/log get $i topics];
:if ($imessage ~"telnet" and $imessage ~"logged in") do={} else={
:if ($topics ~"caps" || $topics ~"wireless") do={
:if ($imessage ~ "[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 dynamic=no disabled=no] do={
:local mac [/ip dhcp-server lease get $k mac-address];
:if ($imessage ~ "$mac") do={ :set presence true; }
}
}
:if (presence = false) do={
:local currentTime [ /log get $i time ];
:set messages ($messages.$currentTime." ".$imessage."%0A%0A");
}
}
:if ($topics ~"warning" || $topics ~"error" || $topics ~"critical" || $imessage ~"logged in") do={
:if ($imessage ~ "[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 dynamic=no disabled=no] do={
:local mac [/ip dhcp-server lease get $k mac-address];
:if ($imessage ~ "$mac") do={ :set imessage ($imessage." / ".[/ip dhcp-server lease get $k comment]); }
}
}
:local currentTime [ /log get $i time ];
:set messages ($messages.$currentTime." ".$imessage."%0A%0A");
}
}
}
:if ([:len $messages] > 0 ) do={
put ($messages);
/tool fetch keep-result=no url="https://api.telegram.org/$botID/sendmessage?chat_id=$chatID&text= $nameID : %0A$messages";
}
}
}
Еще раз большое спасибо за твой труд.
Re: оповещение в телегу
Добавлено: 19 фев 2021, 08:48
Virtue
drpioneer писал(а): ↑18 фев 2021, 22:12
Еще раз большое спасибо за твой труд.
И вам спасибо за доработку.
Re: оповещение в телегу
Добавлено: 26 июл 2021, 14:53
Lurker
Спасибо. Если у кого не заработает.
1)попробуйте через браузер ссылку открыть... тогда ошибку можно посмотреть.
2)если будете копировать\писать ссылку в консоль микротика, то там знак вопроса не ставится и не копируется. Будьте осторожны Я почти час убил на то, чтобы понять почему в браузере работает, а в терминале с микротика нет.
Начал разбирать скрипт..
вот до этого я всё понял
:if (($htime ~ [:pick $date 0 6]) and ([:pick $htime 7 15] > ($timeNow - 00:01:00))) do={
но это что за условие такое?
UPD я так и не разобрался, но у меня появилась гипотеза... микротик криво хранит время логов(для текущего дня не хранит дату+ не учитывает часовые пояса), возможно это костыли чтобы обойти это.
Re: оповещение в телегу
Добавлено: 05 авг 2021, 12:28
vovvw
drpioneer писал(а): ↑18 фев 2021, 22:12
Проблему решил.
Код ниже:
Добрый день!
А на 7-ке это работает?
Если вручную в fetch пишу botID и chatID, а также убираю из текста %0A$messages, то присылает в телегу сообщение, иначе ничего не шлет...
Lurker писал(а): ↑26 июл 2021, 14:53
Спасибо. Если у кого не заработает.
1)попробуйте через браузер ссылку открыть... тогда ошибку можно посмотреть.
2)если будете копировать\писать ссылку в консоль микротика, то там знак вопроса не ставится и не копируется. Будьте осторожны Я почти час убил на то, чтобы понять почему в браузере работает, а в терминале с микротика нет.
Не заработало
Чет про ссылку не понял, как проверить в браузере?
Знак вопроса есть.
Re: оповещение в телегу
Добавлено: 06 авг 2021, 09:57
Lurker
Просто ссылку в адресную строку браузера вставляете и жмёте энтер. Естественно чистым текстом без переменных. И без кирилицы.
Если вручную в fetch пишу botID и chatID, а также убираю из текста %0A$messages, то присылает в телегу сообщение, иначе ничего не шлет...
либо ID неправильные(объявите глобально и попробуйте через fetch) либо $mesages либов скрипте ошибка. Попробуйте скрипты выполнить из командной строки, а не кнопкой run script, тогда вывод ошибок можно увидеть