Отправка уведомления на почту, если кто-то заходит на Микротик

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Ответить
Аватара пользователя
sasha300
Сообщения: 69
Зарегистрирован: 03 мар 2016, 16:00
Откуда: Санкт-Петербург

Отправка уведомления на почту, если кто-то заходит на Микротик

Сообщение sasha300 » 14 июн 2016, 19:41

Приветствую!
Хочу забацать скрипт, который бы оповещал отправкой сообщения на мыло, что такой-то товарищ зашел на Микротик. В крайнем случае, что просто выполнен заход на Микротик без указания личности.
Но трабл в том, что не знаю к чему прицепиться. К логам - там их слишком много, вобщем если подкините идею, то буду весьма признателен
p.s.: ну и заодно немного прикола:

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

:beep frequency=660 length=100ms;
:delay 150ms;
:beep frequency=660 length=100ms;
:delay 300ms;
:beep frequency=660 length=100ms;
:delay 300ms;
:beep frequency=510 length=100ms;
:delay 100ms;
:beep frequency=660 length=100ms;
:delay 300ms;
:beep frequency=770 length=100ms;
:delay 550ms;
:beep frequency=380 length=100ms;
:delay 575ms;
:beep frequency=510 length=100ms;
:delay 450ms;
:beep frequency=380 length=100ms;
:delay 400ms;
:beep frequency=320 length=100ms;
:delay 500ms;
:beep frequency=440 length=100ms;
:delay 300ms;
:beep frequency=480 length=80ms;
:delay 330ms;
:beep frequency=450 length=100ms;
:delay 150ms;
:beep frequency=430 length=100ms;
:delay 300ms;
:beep frequency=380 length=100ms;
:delay 200ms;
:beep frequency=660 length=80ms;
:delay 200ms;
:beep frequency=760 length=50ms;
:delay 150ms;
:beep frequency=860 length=100ms;
:delay 300ms;
:beep frequency=700 length=80ms;
:delay 150ms;
:beep frequency=760 length=50ms;
:delay 350ms;
:beep frequency=660 length=80ms;
:delay 300ms;
:beep frequency=520 length=80ms;
:delay 150ms;
:beep frequency=580 length=80ms;
:delay 150ms;
:beep frequency=480 length=80ms;
:delay 500ms;
:beep frequency=510 length=100ms;
:delay 450ms;
:beep frequency=380 length=100ms;
:delay 400ms;
:beep frequency=320 length=100ms;
:delay 500ms;
:beep frequency=440 length=100ms;
:delay 300ms;
:beep frequency=480 length=80ms;
:delay 330ms;
:beep frequency=450 length=100ms;
:delay 150ms;
:beep frequency=430 length=100ms;
:delay 300ms;
:beep frequency=380 length=100ms;
:delay 200ms;
:beep frequency=660 length=80ms;
:delay 200ms;
:beep frequency=760 length=50ms;
:delay 150ms;
:beep frequency=860 length=100ms;
:delay 300ms;
:beep frequency=700 length=80ms;
:delay 150ms;
:beep frequency=760 length=50ms;
:delay 350ms;
:beep frequency=660 length=80ms;
:delay 300ms;
:beep frequency=520 length=80ms;
:delay 150ms;
:beep frequency=580 length=80ms;
:delay 150ms;
:beep frequency=480 length=80ms;
:delay 500ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=760 length=100ms;
:delay 100ms;
:beep frequency=720 length=100ms;
:delay 150ms;
:beep frequency=680 length=100ms;
:delay 150ms;
:beep frequency=620 length=150ms;
:delay 300ms;
:beep frequency=650 length=150ms;
:delay 300ms;
:beep frequency=380 length=100ms;
:delay 150ms;
:beep frequency=430 length=100ms;
:delay 150ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=430 length=100ms;
:delay 150ms;
:beep frequency=500 length=100ms;
:delay 100ms;
:beep frequency=570 length=100ms;
:delay 220ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=760 length=100ms;
:delay 100ms;
:beep frequency=720 length=100ms;
:delay 150ms;
:beep frequency=680 length=100ms;
:delay 150ms;
:beep frequency=620 length=150ms;
:delay 300ms;
:beep frequency=650 length=200ms;
:delay 300ms;
:beep frequency=1020 length=80ms;
:delay 300ms;
:beep frequency=1020 length=80ms;
:delay 150ms;
:beep frequency=1020 length=80ms;
:delay 300ms;
:beep frequency=380 length=100ms;
:delay 300ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=760 length=100ms;
:delay 100ms;
:beep frequency=720 length=100ms;
:delay 150ms;
:beep frequency=680 length=100ms;
:delay 150ms;
:beep frequency=620 length=150ms;
:delay 300ms;
:beep frequency=650 length=150ms;
:delay 300ms;
:beep frequency=380 length=100ms;
:delay 150ms;
:beep frequency=430 length=100ms;
:delay 150ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=430 length=100ms;
:delay 150ms;
:beep frequency=500 length=100ms;
:delay 100ms;
:beep frequency=570 length=100ms;
:delay 420ms;
:beep frequency=585 length=100ms;
:delay 450ms;
:beep frequency=550 length=100ms;
:delay 420ms;
:beep frequency=500 length=100ms;
:delay 360ms;
:beep frequency=380 length=100ms;
:delay 300ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=500 length=100ms;
:delay 150ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=760 length=100ms;
:delay 100ms;
:beep frequency=720 length=100ms;
:delay 150ms;
:beep frequency=680 length=100ms;
:delay 150ms;
:beep frequency=620 length=150ms;
:delay 300ms;
:beep frequency=650 length=150ms;
:delay 300ms;
:beep frequency=380 length=100ms;
:delay 150ms;
:beep frequency=430 length=100ms;
:delay 150ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=430 length=100ms;
:delay 150ms;
:beep frequency=500 length=100ms;
:delay 100ms;
:beep frequency=570 length=100ms;
:delay 220ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=760 length=100ms;
:delay 100ms;
:beep frequency=720 length=100ms;
:delay 150ms;
:beep frequency=680 length=100ms;
:delay 150ms;
:beep frequency=620 length=150ms;
:delay 300ms;
:beep frequency=650 length=200ms;
:delay 300ms;
:beep frequency=1020 length=80ms;
:delay 300ms;
:beep frequency=1020 length=80ms;
:delay 150ms;
:beep frequency=1020 length=80ms;
:delay 300ms;
:beep frequency=380 length=100ms;
:delay 300ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=760 length=100ms;
:delay 100ms;
:beep frequency=720 length=100ms;
:delay 150ms;
:beep frequency=680 length=100ms;
:delay 150ms;
:beep frequency=620 length=150ms;
:delay 300ms;
:beep frequency=650 length=150ms;
:delay 300ms;
:beep frequency=380 length=100ms;
:delay 150ms;
:beep frequency=430 length=100ms;
:delay 150ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=430 length=100ms;
:delay 150ms;
:beep frequency=500 length=100ms;
:delay 100ms;
:beep frequency=570 length=100ms;
:delay 420ms;
:beep frequency=585 length=100ms;
:delay 450ms;
:beep frequency=550 length=100ms;
:delay 420ms;
:beep frequency=500 length=100ms;
:delay 360ms;
:beep frequency=380 length=100ms;
:delay 300ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=500 length=100ms;
:delay 150ms;
:beep frequency=500 length=100ms;
:delay 300ms;
:beep frequency=500 length=60ms;
:delay 150ms;
:beep frequency=500 length=80ms;
:delay 300ms;
:beep frequency=500 length=60ms;
:delay 350ms;
:beep frequency=500 length=80ms;
:delay 150ms;
:beep frequency=580 length=80ms;
:delay 350ms;
:beep frequency=660 length=80ms;
:delay 150ms;
:beep frequency=500 length=80ms;
:delay 300ms;
:beep frequency=430 length=80ms;
:delay 150ms;
:beep frequency=380 length=80ms;
:delay 600ms;
:beep frequency=500 length=60ms;
:delay 150ms;
:beep frequency=500 length=80ms;
:delay 300ms;
:beep frequency=500 length=60ms;
:delay 350ms;
:beep frequency=500 length=80ms;
:delay 150ms;
:beep frequency=580 length=80ms;
:delay 150ms;
:beep frequency=660 length=80ms;
:delay 550ms;
:beep frequency=870 length=80ms;
:delay 325ms;
:beep frequency=760 length=80ms;
:delay 600ms;
:beep frequency=500 length=60ms;
:delay 150ms;
:beep frequency=500 length=80ms;
:delay 300ms;
:beep frequency=500 length=60ms;
:delay 350ms;
:beep frequency=500 length=80ms;
:delay 150ms;
:beep frequency=580 length=80ms;
:delay 350ms;
:beep frequency=660 length=80ms;
:delay 150ms;
:beep frequency=500 length=80ms;
:delay 300ms;
:beep frequency=430 length=80ms;
:delay 150ms;
:beep frequency=380 length=80ms;
:delay 600ms;
:beep frequency=660 length=100ms;
:delay 150ms;
:beep frequency=660 length=100ms;
:delay 300ms;
:beep frequency=660 length=100ms;
:delay 300ms;
:beep frequency=510 length=100ms;
:delay 100ms;
:beep frequency=660 length=100ms;
:delay 300ms;
:beep frequency=770 length=100ms;
:delay 550ms;
:beep frequency=380 length=100ms;
:delay 575ms;

Аватара пользователя
freewood
Сообщения: 39
Зарегистрирован: 03 мар 2016, 14:47
Откуда: Зеленоград

Re: Отправка уведомления на почту, если кто-то заходит на Микротик

Сообщение freewood » 15 июн 2016, 13:18

Думаю начать можно отсюда:

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

/user active print
А дальше уже парсить что именно требуется отслеживать.

Аватара пользователя
sasha300
Сообщения: 69
Зарегистрирован: 03 мар 2016, 16:00
Откуда: Санкт-Петербург

Re: Отправка уведомления на почту, если кто-то заходит на Микротик

Сообщение sasha300 » 15 июн 2016, 14:24

оки, спасибо за зацепку!

Аватара пользователя
Chupaka
Сообщения: 1245
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Отправка уведомления на почту, если кто-то заходит на Микротик

Сообщение Chupaka » 15 июн 2016, 17:55

я тоже туда сунулся, но так и не смог понять, как (и можно ли малой кровью) отфильтровать тех, кто заходил после определённого времени (предыдущей проверки)

в лоб where last-logged-in > "Jun/15/2016 14:37:17" как-то не зашло

видимо, полный перебор и парсинг чем-то вроде начала скрипта http://forum.mikrotik.by/viewtopic.php?p=235#p235, а потом последовательное сравнение по полям: год, месяц, день, час... :roll:


Аватара пользователя
sasha300
Сообщения: 69
Зарегистрирован: 03 мар 2016, 16:00
Откуда: Санкт-Петербург

Re: Отправка уведомления на почту, если кто-то заходит на Микротик

Сообщение sasha300 » 27 июл 2016, 09:16

За ссылку спасибо!

Аватара пользователя
iFFgen
Сообщения: 2
Зарегистрирован: 02 сен 2018, 11:36

Re: Отправка уведомления на почту, если кто-то заходит на Микротик

Сообщение iFFgen » 02 сен 2018, 13:27

Если кому-нибудь будет интересно, то вот мой вариант уведомления на почту:
- отправка уведомления на один и более адресов;
- можно сделать реакцию на различные записи в логе;
- возможность игнорировать определенные ip адреса либо сервисы;

Создаем задачу в "System - Scheduler"

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

/system scheduler add name=MailOnLogon on-event=MailOnLogon start-date=sep/01/2018 start-time=startup interval=10s policy=read,write,test
Имя задачи из "System - Scheduler" копируем в переменную $sTaskName

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

# E-mail
:local aMailAddressTo {"[email protected]"; "[email protected]"};
:local sMailAddressFrom "[email protected]";
:local sMailPassword "password";
:local sMailSmtpServ "smtp.mail.com";
:local iMailSmtpPort 25;
:local sMailSmtpTls "no";

# Task name in "System - Scheduler" (for setting last check time to comment)
:local sTaskName "MailOnLogon";

# Strings to find in log
:local aStringsToFind [:toarray [/log find \
	message~"logged in" || \
	message~"logged out" || \
	message~"login failure" \
]];

# Ignore string(s) (ip\service\etc)
:local aStringsToIgnore;
#:set aStringsToIgnore {"telnet";"192.168.1.2"};

:local sLastMessageTime [/system scheduler get [find name="$sTaskName"] comment];

:local sMikroTikName [/system identity get name];
:local sResult;
:local bOldMessage true;
:local sMessage;
:local sMessageTime;
:local bAddToResult;

:if ([:len $sLastMessageTime] = 0) do={
	:set $bOldMessage false;
}

:foreach i in=$aStringsToFind do={
	# jan/01/2002 XX:XX:XX - default
	:set $sMessageTime [/log get $i time];
	# XX:XX:XX - current day's logs
	:if ([:len $sMessageTime] = 8) do={
		:set $sMessageTime ([:pick [/system clock get date] 0 11]." ".$sMessageTime);
	} else={
		# jan/01 XX:XX:XX - previous day's logs
		:if ([:len $sMessageTime] = 15 ) do={
			:set $sMessageTime ([:pick $sMessageTime 0 6]."/".[:pick [/system clock get date] 7 11]." ".[:pick $sMessageTime 7 15]);
		}
	}

	:if ($bOldMessage = false) do={
		:set $bAddToResult true;

		:set $sMessage [/log get $i message];

		:foreach sToIgnore in=$aStringsToIgnore do={
			:if ($sMessage ~ "$sToIgnore") do={
				:set bAddToResult false;
			}
		}

		:if ($bAddToResult = true) do={
			:if ($sMessage ~ "login failure") do={
				:set $sResult ($sResult."--> ".$sMessageTime." ".$sMessage."\r\n");
			} else {
				:set $sResult ($sResult."    ".$sMessageTime." ".$sMessage."\r\n");
			}
		};
	}

	:if ($sMessageTime = $sLastMessageTime) do={
		:set $bOldMessage false;
	}
}

if ([:len $sResult] > 0) do={
	/system scheduler set [find name="$sTaskName"] comment=$sMessageTime;

	# Get current date
	:local sCurDate [/system clock get date];
	:local iYear [:pick $sCurDate 7 11];
	:local aMonths [:toarray "jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec"];
	:local iMonth (tonum [:find $aMonths [:pick $sCurDate 0 3 ]] + 1);
	:local iDay [:pick $sCurDate 4 6];
	:if ($iMonth < 10) do={:set iMonth "0$iMonth";}
	:set sCurDate "$iYear.$iMonth.$iDay";

	# Get current time
	:local sCurTime [/system clock get time];

	:foreach sMailAddressTo in=$aMailAddressTo do={
		/tool e-mail send to=$sMailAddressTo \
			from="<$sMailAddressFrom>" user=$sMailAddressFrom password=$sMailPassword server=$sMailSmtpServ port=$iMailSmtpPort start-tls=$sMailSmtpTls \
			subject=("[$sMikroTikName] Logon. $sCurDate - $sCurTime") body=("$sResult");
	}
}
Последний раз редактировалось iFFgen 03 сен 2018, 11:09, всего редактировалось 1 раз.

Аватара пользователя
Chupaka
Сообщения: 1245
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Отправка уведомления на почту, если кто-то заходит на Микротик

Сообщение Chupaka » 02 сен 2018, 15:02

iFFgen, спасибо! А а не затруднит создать отдельную тему с этим скриптом, к с кратеньким описанием? Закрепим её в форуме, чтобы всем глаза мозолила и можно было конкретно скрипт обсуждать при случае :)

Аватара пользователя
iFFgen
Сообщения: 2
Зарегистрирован: 02 сен 2018, 11:36

Re: Отправка уведомления на почту, если кто-то заходит на Микротик

Сообщение iFFgen » 03 сен 2018, 10:21

Chupaka писал(а):
02 сен 2018, 15:02
iFFgen, спасибо! А а не затруднит создать отдельную тему с этим скриптом, к с кратеньким описанием? Закрепим её в форуме, чтобы всем глаза мозолила и можно было конкретно скрипт обсуждать при случае :)
Создать отдельную тему - не проблема, но, как мне кажется, название данной отражает суть скрипта. И если сделать еще одну тему, то будет путаница.

Аватара пользователя
Chupaka
Сообщения: 1245
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Отправка уведомления на почту, если кто-то заходит на Микротик

Сообщение Chupaka » 03 сен 2018, 10:59

Ну, просто в этой теме он висит где-то внизу =)

Ответить