Скрипт оповещения в телеграмм

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Аватара пользователя
Virtue
Сообщения: 142
Зарегистрирован: 07 мар 2014, 10:17

Кому нужно, выкладываю обновленный скрипт. Переписал его с нуля. Выкинул все лишнее.. за исключением если кому не надо отслеживать вайфай - сотрите topics~"wireless" ||

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

# BEGIN SETUP
:local scheduleName "LogMikrotik"
:local bot "BOT TELEGRAM ANDA"
:local ChatID "CHAT ID ANDA"
:local startBuf [:toarray [/log find message~"logged in" || topics~"wireless" || topics~"error" || topics~"warning" || topics~"critical"]]
:local removeThese {"telnet"}
:local TimeOFF [:toarray ("00:00","03:00")]
# END SETUP

if ([:len [/system scheduler find name="$scheduleName"]] = 0) do={
/log warning "[LOGMON] ERROR: Schedule does not exist. Create schedule and edit script to match name"
}

:local name [/system  identity  get name]
:local TimeNow [:pick [/system clock get time] 0 5]
:local lastTime [/system scheduler get [find name="$scheduleName"] comment]
:local currentTime
:local message
:local output
:local keepOutput false
:local logTrue

if ([:len $lastTime] = 0) do={
:set keepOutput true
}

:foreach i in=$startBuf do={
  :local var true
  :foreach j in=$removeThese do={
    if ([/log get $i message] ~ $j) do={
      :set var false
      }
    }
  if ($var=true) do={:set logTrue ($logTrue, $i)}
  }
  
:foreach l in=$logTrue do={
  :set currentTime [ /log get $l time ]

  if ([:len $currentTime] = 8 ) do={
    :set currentTime ([:pick [/system clock get date] 0 11]." ".$currentTime)
    } else={

    if ([:len $currentTime] = 15 ) do={
      :set currentTime ([:pick $currentTime 0 6]."/".[:pick [/system clock get date] 7 11]." ".[:pick $currentTime 7 15])
      }
    }
  if ($keepOutput=true) do={
    :set message [/log get $l message]
    if ([/log get $l message] ~ "[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 value-name=mac-address]
        if ([/log get $l message] ~ "$mac") do={
          :set message ($message . " / " . [/ip dhcp-server lease get $k value-name=comment])
          }
        }
      }
  :set output ($output.$currentTime." ".$message."%0A%0A")
    } else={

    :set message [/log get $l message]
  
    if ($currentTime = $lastTime) do={
      :set keepOutput true
      }
    }
  }
if (([:len $output] > 0) and ($TimeOFF ~ $TimeNow)) do={
  /system scheduler set [find name="$scheduleName"] comment=$currentTime
  } else={

  if (([:len $output] > 0) and ($currentTime != $lastTime)) do={
    /system scheduler set [find name="$scheduleName"] comment=$currentTime
    /tool fetch url="https://api.telegram.org/bot$bot/sendmessage?chat_id=$ChatID&text= $name : %0A$output" keep-result=no;
    } else={

    if (([:len $message] > 0) and ($currentTime != $lastTime)) do={
      /system scheduler set [find name="$scheduleName"] comment=$currentTime
      }
    }
  }


denis.korsachv
Сообщения: 31
Зарегистрирован: 13 ноя 2019, 15:56

Интересно только у меня у одного прыгает загрузка процессора от этого скрипта или это нормально? RB2011 загрузка скачет от 2% до 50%


Аватара пользователя
hulitolku
Сообщения: 34
Зарегистрирован: 07 окт 2018, 11:59

РКН отменил блокировку, теперь можно не использовать соксы.


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Как тренировка, сойдёт. Сегодня отменили, завтра опять начнут блокировать. Это просто заигрывания. Мы должны быть просто в курсе, как сделать.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
pavel.komissarov
Сообщения: 9
Зарегистрирован: 14 ноя 2018, 08:34

Добрый день. Подскажите, возникла проблема с отправкой в сообщении телеграм русских символов. Не знает-ли кто как решить это?


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

Нужно перекодировать символы в UTF8


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
pavel.komissarov
Сообщения: 9
Зарегистрирован: 14 ноя 2018, 08:34

Не подскажете команду, которой перекодировать? я не смог найти...
Русские буквы имеются в названиях интерфейсов, которые и хочется отправлять в телеграм.


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Да там не команда будет, а целый скрипт. Из-за мелкой хотелки я бы не стал заморачиваться с этим. Вон в соседней теме посмотрите пример перекодировки viewtopic.php?f=14&t=11655 Оно вам надо? Вы готовы переписать всё под себя?


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
pavel.komissarov
Сообщения: 9
Зарегистрирован: 14 ноя 2018, 08:34

спасибо


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

Чтобы перекодировать кириллицу и спец. симфолы для телеграмма Можно сделать проще чем у Pepelx. Сделаю, сообщу.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить