Скрипт log2telegram

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

Скрипт https://forum.mikrotik.com/viewtopic.php?t=151953 работает, единственная проблема - повторяет отправку в 00:00 и 03:00
Не могу понять в чем дело, помогите разобрать.

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

# LOG FILTER TO TELEGRAM BY AHMED MOUSELLY
# BEGIN SETUP Edit Here
:local myserver ([/system identity get name])
:local scheduleName "LogFilter"
:local bot "your bot id"
:local ChatID "-your chat id"
:local startBuf [:toarray [/log find message~" failure" || message~"loop" || message~"down" || message~"fcs" || message~"excessive"]]

# END SETUP

# warn if schedule does not exist
:if ([:len [/system scheduler find name="$scheduleName"]] = 0) do={
  /log warning "[LogFilter] Alert : Schedule does not exist. Creating schedule ...."

 /system scheduler add name=$scheduleName interval=60s start-date=Jul/05/2019 start-time=startup on-event=LogFilter

  /log warning "[LogFilter] Alert : Schedule created ."
}

# get last time
:local lastTime [/system scheduler get [find name="$scheduleName"] comment]
# for checking time of each log entry
:local currentTime
# log message
:local message
 
# final output
:local output

:local keepOutput false
# if lastTime is empty, set keepOutput to true
:if ([:len $lastTime] = 0) do={
  :set keepOutput true
}

:local counter 0
# loop through all log entries that have been found
:foreach i in=$startBuf do={
 
# loop through all removeThese array items
  :local keepLog true
  :foreach j in=$removeThese do={
#   if this log entry contains any of them, it will be ignored
    :if ([/log get $i message] ~ "$j") do={
      :set keepLog false
    }
  }
  :if ($keepLog = true) do={
   
   :set message [/log get $i message]

#   LOG DATE
#   depending on log date/time, the format may be different. 3 known formats
#   format of jan/01/2002 00:00:00 which shows up at unknown date/time. Using as default
    :set currentTime [ /log get $i time ]
#   format of 00:00:00 which shows up on current day's logs
   :if ([:len $currentTime] = 8 ) do={
     :set currentTime ([:pick [/system clock get date] 0 11]." ".$currentTime)
    } else={
#     format of jan/01 00:00:00 which shows up on previous day's logs
     :if ([:len $currentTime] = 15 ) do={
        :set currentTime ([:pick $currentTime 0 6]."/".[:pick [/system clock get date] 7 11]." ".[:pick $currentTime 7 15])
      }
   }
    
#   if keepOutput is true, add this log entry to output
   :if ($keepOutput = true) do={
     :set output ($output.$currentTime." %0A%0A ".$message."\r\n")
   }

    :if ($currentTime = $lastTime) do={
     :set keepOutput true
     :set output ""
   }
  }
  :if ($counter = ([:len $startBuf]-1)) do={
   :if ($keepOutput = false) do={    
     :if ([:len $message] > 0) do={
        :set output ($output.$currentTimer." ".$message."\r\n")
      }
    }
  }
  :set counter ($counter + 1)
}

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


Аватара пользователя
Virtue
Сообщения: 142
Зарегистрирован: 07 мар 2014, 10:17

тут есть решение viewtopic.php?f=14&t=10464
а вообще я так понял дело в изменении отображении даты логов как раз в эти часы (до нуля часов сегодняшние логи пишутся без даты, с нуля до трех с датой, потом опять без)


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

В России не рботает из-за блокировки api telegram.
Нужно пускать через соксы с помощью curl, реализация которого на микротике отсуствует.


gwk
Сообщения: 2
Зарегистрирован: 02 ноя 2017, 13:49

У меня работает через vpn


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

gwk писал(а): 23 май 2020, 03:37 У меня работает через vpn
ну впн это не спортивно


Аватара пользователя
Virtue
Сообщения: 142
Зарегистрирован: 07 мар 2014, 10:17

hulitolku писал(а): 23 май 2020, 02:19 В России не рботает из-за блокировки api telegram.
Нужно пускать через соксы с помощью curl, реализация которого на микротике отсуствует.
а у меня кстате работает и так, через одного из провайдеров :-):


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

Virtue писал(а): 23 май 2020, 15:06
hulitolku писал(а): 23 май 2020, 02:19 В России не рботает из-за блокировки api telegram.
Нужно пускать через соксы с помощью curl, реализация которого на микротике отсуствует.
а у меня кстате работает и так, через одного из провайдеров :-):
Да, это зависит от провайдеров. У меня на мтс, билайне, мегафоне не работают. А вот на районном провайдере нет блокировок.


Ответить