Прошу помощи. Скрипт аптайм пользователя подключения по VPN

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
rbr
Сообщения: 18
Зарегистрирован: 14 окт 2019, 12:41

Всех приветствую. Ситуация следующая, есть скрипт
 

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

UP

:local pppuser
:local localAddr
:local remoteAddr
:local callerId
:local calledId
:local interfaceName
 
:set pppuser $"user"
:set localAddr $"local-address"
:set remoteAddr $"remote-address"
:set callerId $"caller-id"
:set calledId $"called-id"
:set interfaceName [/interface get $interface name] 

:local "msg_subj" "Пользователь $user подключился к VPN ООО РОга и Копыта"
:local "msg_body" "Пользователь $user подключился в $[/system clock get time] к ***** с внешним IP $callerId и получил внутренний IP $remoteAddr. Статус подключен";
/tool e-mail
set address=smtp.yandex.ru from="Mikrotik  <********@yandex.ru>" password=********** port=587 start-tls=yes user=******
send to="*******@mail.ru" subject=$"msg_subj" body=$"msg_body"

DOWN

:local pppuser
:local localAddr
:local remoteAddr
:local callerId
:local calledId
:local interfaceName
 
:set pppuser $"user"
:set localAddr $"local-address"
:set remoteAddr $"remote-address"
:set callerId $"caller-id"
:set calledId $"called-id"
:set interfaceName [/interface get $interface name]

:local "msg_subj" "Пользователь $user отключился от VPN ООО РОга и Копыта"
:local "msg_body" "Пользователь $user отключился в $[/system clock get time] от ******* с внешним IP $callerId и внутренним IP $remoteAddr. Статус отключен. Uptime пользователя за сеанс $[/ppp active get [/ppp active find name=$user] uptime] ";
/tool e-mail
set address=smtp.yandex.ru from="Mikrotik  <*******@yandex.ru>" password=********* port=587 start-tls=yes user=*******
send to="******@mail.ru" subject=$"msg_subj" body=$"msg_body"
Данный вариант скрипта работает если уведомления отсылаются на почту.
Если делать чтобы писалось в лог :log info message=, то секция DOWN не срабатывает.
помогите разобраться в чем ошибка?
Последний раз редактировалось rbr 21 июн 2022, 15:14, всего редактировалось 1 раз.


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

Возможно из-за этой строки:

:log info message="$callerId @ $remoteAddr disconnected"

Зачем в ней символ "@" ?

К тому же при переходе в "DOWN" некоторые переменные становятся не доступными.

Вот как у меня работает, можете взять мой код:

UP:

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

{
:local smtpserv [:resolve "smtp.mail.ru"];
:local Eaccount [/tool e-mail get user];
:local pass [/tool e-mail get password];
:local Email "user@mail.ru";
;
/tool e-mail send from="<$Eaccount>" to=$Email server=$smtpserv \
 port=587 user=$Eaccount password=$pass start-tls=yes subject="Пользователь $user подключился к VPN"  body="Пользователь $user подключился по $[/ppp active get [/ppp active find where name=$user caller-id=$"caller-id" address=$"remote-address"] service] vpn IP - $[/ppp active get [/ppp active find where name=$user caller-id=$"caller-id" address=$"remote-address"] address] в $[/system clock get time].\r\nIP-адрес клиента - $"caller-id".\r\nИнфо об IP клиента - http://apps.db.ripe.net/search/query.html?searchtext=$"caller-id"";
}
DOWN:

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

{
:local smtpserv [:resolve "smtp.mail.ru"];
:local Eaccount [/tool e-mail get user];
:local pass [/tool e-mail get password];
:local Email "user@mail.ru";
;
/tool e-mail send from="<$Eaccount>" to=$Email server=$smtpserv \
 port=587 user=$Eaccount password=$pass start-tls=yes subject="Пользователь $user отключился от VPN"  body="Пользователь $user отключился в $[/system clock get time].";
}
Последний раз редактировалось Sertik 21 июн 2022, 15:20, всего редактировалось 3 раза.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
rbr
Сообщения: 18
Зарегистрирован: 14 окт 2019, 12:41

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

Если из секции DOWN убрать $[/ppp active get [/ppp active find name=$user] uptime] и отправлять уведомления в лог, то работает, но без параметра аптайм. Интересно в чем проблема. Если слать на почту то все ок. Если писать в лог то не пашет. Нет параметра аптайм.


rbr
Сообщения: 18
Зарегистрирован: 14 окт 2019, 12:41

Нужен параметр аптайм. Его нет если писать в лог. Если слать на почту то есть. В чем причина непонятно.


Аватара пользователя
Brook
Сообщения: 127
Зарегистрирован: 24 май 2022, 00:29

На всякий случай оставлю это здесь

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

:local pppUptime [ppp active get [find name=$pppName] uptime]


Ответить