Приветь всем.
Очен нужен скрипт, которой оповесчал на мейл, что конкретной мак адрес появился в сети.
Спасибо предварительно.
Скрипт
-
- Сообщения: 6
- Зарегистрирован: 11 апр 2023, 18:39
Вам сначала нужно smtp настроить на микроте:
Сам скрипт/tool e-mail
set address=smtp.example.com from=myemail@example.com password=пароль port=587 or 25 start-tls=yes user=myemail@example.com
И все это в планировщик добавить::local emailTo "youmail@example.com"
:local subject "Обнаружен новый MAC-адрес"
# Здесь храним увиденные MAC-адреса
:local knownMacs;
# Можно загрузить ранее известные мак адреса из файла
:if ([/file find name="known-macs.txt"] != "") do={
:set knownMacs [/file get [find name="known-macs.txt"] contents]
} else {
:set knownMacs ""
}
# Проверяем список арп
:foreach i in=[/ip arp find where dynamic=yes] do={
:local currentMac [/ip arp get $i mac-address]
# Проверяем, есть ли MAC в известном списке
:if ([:find $knownMacs $currentMac] = -1) do={
# Отправляем email
/tool e-mail send to=$emailTo subject=$subject body=("Обнаружен новый MAC-адрес: " . $currentMac)
# Добавляем MAC в известный список
:set knownMacs ($knownMacs . "," . $currentMac)
}
}
# Сохраняем известные MAC-адреса в файл
/file set [find name="known-macs.txt"] contents=$knownMacs
/system scheduler
add interval=5m name=CheckNewMACs on-event=имяВашегоСкрипта start-date=nov/01/2023 start-time=00:00:00
-
- Сообщения: 23
- Зарегистрирован: 06 мар 2019, 17:17
Спасибо за бьiстрая реакция, а где точно надо ставит мак?
Идея в том, что мой мениджер очень много ездит и не всегда могу его найти в офисе - если его мак в сети значит можно говорить с ним ...
П.С.
А если надо следит за болше мак адреса?
Идея в том, что мой мениджер очень много ездит и не всегда могу его найти в офисе - если его мак в сети значит можно говорить с ним ...
П.С.
А если надо следит за болше мак адреса?
- podarok66
- Модератор
- Сообщения: 4402
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Всё это интересно и хорошо, но логичнее всего использовать всё же логи ( тавтология случайна). Если для одного МАС-адреса в случае подключения через WiFi, поиск нужного будет выглядеть примерно так:
В этом коде :put "$lastTime $Msg"; заменяем put на нужный нам способ отправки. Кусок "00:8E:05:00:94:7B@Mikrotik:" тоже смотрим, как у вас в логах выглядит.
Если для целого списка, надо цикл запускать. Но там всё как обычно, никаких особых проблем я не вижу.
Всё написанное работает на 6 версии. О версии 7 не могу сказать, я там не проверял. А вообще я это восемь лет назад писал, может что и поменялось с тех пор)))
Конечно, при любом раскладе скрипт нужно пилить под конкретные условия. Но это явно уже может быть сделано только самим ТС.
Код: Выделить всё
{
:global lastTime;
:global curMsg [ :toarray [ /log find message~"00:8E:05:00:94:7B@Mikrotik:" ] ];
:global curArCnt [ :len $curMsg ] ;
:global curTime [ :totime [/log get [ :pick $curMsg ($curArCnt -1) ] time ] ];
:global Msg "";
:if ( $curArCnt != 0 ) do={
:if ( $lastTime = "" ) do={
:set lastTime $curTime ;
:set Msg [/log get [ :pick $curMsg ($curArCnt-1) ] message];
:put "$lastTime $Msg";
} else={
:if ( $lastTime < $curTime ) do={
:set lastTime $curTime ;
:set Msg [/log get [ :pick $curMsg ($curArCnt-1) ] message];
:put "$lastTime $Msg";
}
}
}
}
Если для целого списка, надо цикл запускать. Но там всё как обычно, никаких особых проблем я не вижу.
Всё написанное работает на 6 версии. О версии 7 не могу сказать, я там не проверял. А вообще я это восемь лет назад писал, может что и поменялось с тех пор)))
Конечно, при любом раскладе скрипт нужно пилить под конкретные условия. Но это явно уже может быть сделано только самим ТС.
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 23
- Зарегистрирован: 06 мар 2019, 17:17
Уважаемьi, а нельзя по подробнее ...:
:put "$lastTime $Msg"; - здесь надо поставит примерно :
::local Eaccount "mikrotik@xxx.xxx";
:local pass "xxxxxxx";
:put "$lastTime $Msg"; - здесь надо поставит примерно :
::local Eaccount "mikrotik@xxx.xxx";
:local pass "xxxxxxx";
- podarok66
- Модератор
- Сообщения: 4402
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Да что там подробнее? Я делал ради любопытства, и команда :put - это для отладки. На ее место встраиваем конструкцию, ответственную за отправку мессаги удобным вам способом ( логирование, Телеграм, почта, сервис SMS, API для какой-то связки, ещё какие-либо извороты). Часто используют одновременно несколько способов, чтобы как-то резервировать и получить месседж гарантированно. Это достаточно обширная область, я не преследовал идею создать конечный скрипт. Повторюсь, это был акт чистого любопытства. Сделал и забыл.
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...