roma_good Опубликовано 10 января, 2017 (изменено) · Жалоба Оповещение администратора о входе в Mikrotik я использую для этого скрипт # BEGIN SETUP # имя скрипта в scheduler :local scheduleName "on_login" # мыло на которое отправлять отчет :local emailAddress "r.karchava@gmail.com" # записи в логе по маске, которые попадают в отчет :local startBuf [:toarray [/log find message~"logged in" || message~"login failure"]] # слова-исключения. Сюда добавляем наши "легитимные" IP, или, например, сервисы по которым не хотим отслеживать подключения. :local removeThese {"api";"192.168.88.27"} # smtp сервер :local smtpserv [:resolve "smtp.yandex.ru"]; # мыло с которого будет все отправляться :local email "karchavagio@yandex.ru"; # пароль к мылу :local pass PASSWORD; # 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 lastTime [/system scheduler get [find name="$scheduleName"] comment] # for checking time of each log entry :local currentTime # log message :local message # вводим переменную 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." ".$message."\r\n") } # if currentTime = lastTime, set keepOutput so any further logs found will be added to output # reset output in the case we have multiple identical date/time entries in a row as the last matching logs # otherwise, it would stop at the first found matching log, thus all following logs would be output :if ($currentTime = $lastTime) do={ :set keepOutput true :set output "" } } # if this is last log entry :if ($counter = ([:len $startBuf]-1)) do={ # If keepOutput is still false after loop, this means lastTime has a value, but a matching currentTime was never found. # This can happen if 1) The router was rebooted and matching logs stored in memory were wiped, or 2) An item is added # to the removeThese array that then ignores the last log that determined the lastTime variable. # This resets the comment to nothing. The next run will be like the first time, and you will get all matching logs :if ($keepOutput = false) do={ # if previous log was found, this will be our new lastTime entry :if ([:len $message] > 0) do={ :set output ($output.$currentTime." ".$message."\r\n") } } } :set counter ($counter + 1) } # If we have output, save new date/time, and send email if ([:len $output] > 0) do={ /system scheduler set [find name="$scheduleName"] comment=$currentTime /tool e-mail send server=$smtpserv port=587 user=$email password=$pass start-tls=yes to="$emailAddress" from=$email subject="MikroTik alert $currentTime" body="$output" /log info "[LOGMON] New logs found, send email" } выдаёт ошибку system,e-mail,error Error sending e-mail <MikroTik alert jan/10/2017 13:56:41>: AUTH failed я пытался отправить через мои маил сервер и вот log < unknown[188.166.XX.YY]: RCPT TO:<roma@ttff.com> extract_addr: input: <roma@ttff.com> smtpd_check_addr: addr=roma@ttff.com ctable_locate: move existing entry key roma@ttff.com extract_addr: in: <roma@ttff.com>, result: roma@ttff.com NOQUEUE: reject: RCPT from unknown[188.166.XX.YY]: 504 5.5.2 <host>: Helo command rejected: need fully-qualified hostname; from=<admin@host> to=<roma@ttff.com> proto=ESMTP helo=<host> Изменено 10 января, 2017 пользователем roma_good Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 10 января, 2017 · Жалоба Вообще микротик может отправлять лог о событиях на стороннее устройство, и вход администратора там тоже фигурирует. Это проще чем городить скрипты по 1000 строк, которые еще и не работают. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roma_good Опубликовано 10 января, 2017 · Жалоба там один девайс, и для одного девайса настраивать syslog? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mafijs Опубликовано 10 января, 2017 · Жалоба Зачем syslog? Просто на e-mail приходит сообщение типа : system,error,critical <device>: login failure for user <xxxx> from 192.168.17.150 via winbox Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 10 января, 2017 · Жалоба В меню System->Logging на вкладке Action создаете новое правило, выбираете в списке email. Далее там же на вкладке Rules создаете новое правило, в качестве типа назначения выбираете только что созданное правило отправки на почту, и туда пойдут все логи в виде большого количества писем, то есть спама. Что бы все события лога не отправлялись, нужно ввести уточнения. Для теста запись с почтой лучше переделать просто на отправку локальных уведомлений, после полной отладки только подставлять почту. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
PLZ2 Опубликовано 17 ноября, 2018 · Жалоба В 10.01.2017 в 15:10, roma_good сказал: # слова-исключения. Сюда добавляем наши "легитимные" IP, или, например, сервисы по которым не хотим отслеживать подключения. :local removeThese {"api";"192.168.88.27"} у меня все равно приходят уведомления Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
McSea Опубликовано 17 ноября, 2018 (изменено) · Жалоба @roma_good Где такие настройки Яндекс почты взяли ? Должно быть "port=465 start-tls=tls-only". Изменено 17 ноября, 2018 пользователем McSea Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...