Страница 1 из 13

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

Добавлено: 23 сен 2020, 14:48
Virtue
Предлагаю новый скрипт оповещения в телеграм со сравнительно небольшой нагрузкой на ЦПУ. Интервал выполнения - раз в минуту. Необходимо создать своего бота через BotFather и добавить его в группу, в которую будут приходить оповещения.

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

# script by Virtue
: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
:foreach i in=$logs do={
:local imessage [/log get $i message]
:if ($imessage ~"telnet" and $imessage ~"logged in") do={} else={
:local topics [/log get $i topics]
:if ($topics ~"wireless" || $topics ~"warning" || $imessage ~"logged in" || $topics ~"error" || $topics ~"critical") 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] 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={
:local botID "bot1000075423:AAEYn0eWtjTRKKg_BGF7fQiY5UjrTsdMfhl"
:local chatID "-1001422750080"
:local mikname [/system  identity  get name]
/tool fetch keep-result=no url="https://api.telegram.org/$botID/sendmessage?chat_id=$chatID&text= $mikname : %0A$messages"
 }
}
При наличии комментарий статик дхцп лесс записей, маки, содержащиеся в логах, будут присылаться с этими комментариями.

Для отключения отслеживания вайфай подключений, стираем из кода $topics ~"wireless"

Меняем botID и chatID вконце кода на свои..

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

Добавлено: 24 сен 2020, 12:27
Sertik
Скрипт ищет только динамических клиентов в dhcp-lease. А статические ?

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

Добавлено: 24 сен 2020, 12:45
Virtue
Sertik писал(а): 24 сен 2020, 12:27 Скрипт ищет только динамических клиентов в dhcp-lease. А статические ?
Ничего не понял, у меня как раз все записи статические. Я даже не могу сделать комментарий пока из динамической записи не сделаю статику

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

Добавлено: 24 сен 2020, 13:59
Sertik
Не не, это понятно. Я имел ввиду "совсем статических" клиентов в /ip arp. Но их тогда пинговать всех придётся по таблице, а это долго.

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

Добавлено: 02 окт 2020, 00:06
Eugen233
А как получить не комментарий по строке, а HOST-NAME?
Конструкция вида :set imessage ($imessage . " / " . [/ip dhcp-server lease get $k value-name=HOST-NAME]) не работает почему-то...

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

Добавлено: 02 окт 2020, 13:41
Virtue
Eugen233 писал(а): 02 окт 2020, 00:06 А как получить не комментарий по строке, а HOST-NAME?
Конструкция вида :set imessage ($imessage . " / " . [/ip dhcp-server lease get $k value-name=HOST-NAME]) не работает почему-то...
да проверил ваши слова, в общем HOST-NAME именно заглавными буквами не работает, а строчными все ок, пробуйте..

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

Добавлено: 02 окт 2020, 16:00
Eugen233
Мне кажется я пробовал и в нижнем регистре, вечером проверю, сейчас нет доступа.
А имеет значение статическая запись или динамическая? а то у мне большинство динамические...

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

Добавлено: 02 окт 2020, 20:03
Virtue
Eugen233 писал(а): 02 окт 2020, 16:00 А имеет значение статическая запись или динамическая?
Не имеет. Сейчас специально проверил host-name + динамический адрес, работает..

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

Добавлено: 02 окт 2020, 22:32
Eugen233
Спасибо, кажется понял причину, падает на попытке отправить вот это имя - "Honor_10-a2e", но при этом нормально отправляет "нonor_10-a2e" или например "Galaxy-A3-2017"
Как починить пока ЗХ, но хоть понятно куда копать...

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

Добавлено: 02 окт 2020, 22:38
Virtue
Eugen233 писал(а): 02 окт 2020, 22:32 Спасибо
ну а насчет host-name всетаки проверили? заглавными не отправляет, а маленькими отправляет?