Страница 1 из 1

сообщение при подключении к VPN

Добавлено: 23 янв 2018, 11:35
playful2017
добрый день, подскажите пожалуйста как реализовать,
я хочу сделать информирование, о подключении клиента к vpn, через e-mail.
1.JPG
1.JPG (22.83 КБ) 9461 просмотр
первая команда не выводит вообще никакого результата(хотя подключение есть)
вторая команда выводит, но при добавлении в скрипт и выполнении его, приходит не данные а пустое сообщение.
скрин скрипта
2.JPG
2.JPG (17.11 КБ) 9461 просмотр
так же на просторах интернета нашел код, но у меня он не работает, и разобрать синтаксис я пока не могу

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

:local email "ваш_адрес_почты"
##### Тело скрипта
/tool e-mail send to=$email subject="Пользователь $user подключился к VPN"  body="Пользователь $user подключился по $[/ppp active get [/ppp active find where name=$user caller-id=$"caller-id" address=$"remote-address"] service] в $[/system clock get time].\r\nIP-адрес клиента - $"caller-id".\r\nИнфо об IP клиента - http://apps.db.ripe.net/search/query.html?searchtext=$"caller-id""

Re: сообщение при подключении к VPN

Добавлено: 23 янв 2018, 13:16
Chupaka
playful2017 писал(а): 23 янв 2018, 11:35 первая команда не выводит вообще никакого результата(хотя подключение есть)
У вас переменные $user и $"caller-id" глобальные и заполнены корректными данными?
playful2017 писал(а): 23 янв 2018, 11:35 вторая команда выводит, но при добавлении в скрипт и выполнении его, приходит не данные а пустое сообщение.
Она выводит данные в терминал побочно, сама же команда должна лишь присваивать переменной значение. А значение там своеобразное будет - вы внутренние идентификаторы так получите.
playful2017 писал(а): 23 янв 2018, 11:35 так же на просторах интернета нашел код, но у меня он не работает, и разобрать синтаксис я пока не могу

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

:local email "ваш_адрес_почты"
##### Тело скрипта
/tool e-mail send to=$email subject="Пользователь $user подключился к VPN"  body="Пользователь $user подключился по $[/ppp active get [/ppp active find where name=$user caller-id=$"caller-id" address=$"remote-address"] service] в $[/system clock get time].\r\nIP-адрес клиента - $"caller-id".\r\nИнфо об IP клиента - http://apps.db.ripe.net/search/query.html?searchtext=$"caller-id""
Это предлагается в on-up запихнуть в профиле ppp? Какие данные вам в письме нужны? Начните с малого, добавляйте переменные, если работает:

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

:local email "ваш_адрес_почты"
/tool e-mail send to=$email \
	subject="Пользователь $user подключился к VPN" \
	body="Пользователь $user подключился по в $[/system clock get time]. IP-адрес клиента - $"caller-id"."
Доступные переменные можно глянуть вот тут: https://wiki.mikrotik.com/wiki/Manual:P ... r_Profiles - в параметре on-up.

Re: сообщение при подключении к VPN

Добавлено: 23 янв 2018, 13:41
playful2017
Спасибо за разъяснение куда ставить скрипт

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

:local email "ваш_адрес_почты"
##### Тело скрипта
/tool e-mail send to=$email subject="Пользователь $user подключился к VPN"  body="Пользователь $user подключился по $[/ppp active get [/ppp active find where name=$user caller-id=$"caller-id" address=$"remote-address"] service] в $[/system clock get time].\r\nIP-адрес клиента - $"caller-id".\r\nИнфо об IP клиента - http://apps.db.ripe.net/search/query.html?searchtext=$"caller-id""

Re: сообщение при подключении к VPN

Добавлено: 23 янв 2018, 14:26
Chupaka
Это значит, заработало, или это как будто был вопрос?..

Re: сообщение при подключении к VPN

Добавлено: 24 янв 2018, 08:01
playful2017
Chupaka писал(а): 23 янв 2018, 14:26 Это значит, заработало, или это как будто был вопрос?..
Заработало, спасибо за разъяснение куда вставлять скрипт=)

Re: сообщение при подключении к VPN

Добавлено: 28 сен 2018, 12:55
Vita077
Как отправить этим скриптом сообщение в 2 или более адреса? Цепочками адресов через , ; : с пробелами и без не получается.
:local email "адрес электронной почты"
##### Тело скрипта
/tool e-mail send to=$email subject="Пользователь $user подключился к VPN" body="Пользователь $user подключился по $[/ppp active get [/ppp active find where name=$user caller-id=$"caller-id" address=$"remote-address"] service] в $[/system clock get time].\r\nIP-$"caller-id""

Re: сообщение при подключении к VPN

Добавлено: 28 сен 2018, 13:33
Chupaka
Ну, если не получилось одной командой - всегда можно отправить несколькими :)

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

:local msg_subj "Пользователь $user подключился к VPN"
:local msg_body "Пользователь $user подключился по $[/ppp active get [/ppp active find where name=$user caller-id=$"caller-id" address=$"remote-address"] service] в $[/system clock get time].\r\nIP-$"caller-id"";
/tool e-mail
  send to="email 1" subject=$msg_subj body=$msg_body
  send to="email 2" subject=$msg_subj body=$msg_body

Re: сообщение при подключении к VPN

Добавлено: 28 сен 2018, 18:57
Vita077
у меня с таким синтаксисом не работает (RouterOS 6.39.3), видимо я логику не понимаю, скорее просто не знаю как... Работает скрипт, который я приводил выше. Правильно понимаю, надо ввести локальные переменные email 1 и email 2?

Re: сообщение при подключении к VPN

Добавлено: 28 сен 2018, 19:02
Chupaka
Нет, вместо email 1 и email 2 надо вбить ручками нужные email'ы. Что именно не работает? Что вы делаете, чего ожидаете и что идёт не так, как вы ожидаете? Телепатов тут, к сожалению, нет.

Re: сообщение при подключении к VPN

Добавлено: 01 окт 2018, 17:09
Vita077
Просто заменяю рабочий скрипт для одного email (приводил чуть выше) Вашим, с указанием двух адресов. В итоге ничего не происходит - в логах отображается только изменение профиля РРР, подключение/отключение vpn-клиента. В идеале хочется отправлять на 2 адреса, не хочу создавать второе подключение с отдельным профилем - как я понимаю, это очень даже "не по феншую". Ну и совсем было бы идеальным - отправлять сообщение не при переподключении клиента, а при смене его Caller ID.

Re: сообщение при подключении к VPN

Добавлено: 01 окт 2018, 17:25
Chupaka
Вы бы привели конкретный скрипт, который не работает, раз задаёте такие вопросы выше.

А как вы себе представляете смену Caller ID без переподключения?

Re: сообщение при подключении к VPN

Добавлено: 02 окт 2018, 06:49
Vita077
Поле "Caller ID" vpn-клиента - как правило IP-адрес с которого клиент подключается к серверу. Можно ли сделать так, чтобы сообщение отправлялось только при изменении этого значения? Получается скрипт надо немного усложнить с сохранением последнего IP-адреса и отправкой сообщения если он изменился на новый.
Скрипт же который у меня не работает - то что Вы давали чуть выше, слегка с укороченными инфо-сообщениями:
:local msg_subj "$user"
:local msg_body "$user подключился по $[/ppp active get [/ppp active find where name=$user caller-id=$"caller-id" address=$"remote-address"] service] в $[/system clock get time].\r\nIP - $"caller-id"";
/tool e-mail
send to="[email protected]" subject=$msg_subj body=$msg_body
send to="[email protected]" subject=$msg_subj body=$msg_body

Re: сообщение при подключении к VPN

Добавлено: 02 окт 2018, 10:59
Chupaka
Оказывается, подчёркивания в именах переменных просто так использовать нельзя :oops:
Попробуйте исправленный вариант:

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

:local "msg_subj" "$user"
:local "msg_body" "$user подключился по $[/ppp active get [/ppp active find where name=$user caller-id=$"caller-id" address=$"remote-address"] service] в $[/system clock get time].\r\nIP - $"caller-id"";
/tool e-mail
send to="[email protected]" subject=$"msg_subj" body=$"msg_body"
send to="[email protected]" subject=$"msg_subj" body=$"msg_body"
Caller-ID можно попробовать сохранять в комментарий к учётной записи. Это если их много...

Re: сообщение при подключении к VPN

Добавлено: 02 окт 2018, 11:32
Vita077
отправка писем в последнем варианте тоже не происходит...
С Caller ID - не критично, переподключения бывают редко, больше по причине отключения электроэнергии. В приоритете многоадресная отправка. Я правильно понимаю, в работающем скрипте можно добавить более 2 адресатов - просто указывать остальные с новой строки?

Re: сообщение при подключении к VPN

Добавлено: 02 окт 2018, 12:36
Chupaka
Отправка не происходит - а что происходит? В логе пусто?

Если "с новой строки" значит "скопировать полностью всю строку" - да, можно и так.

Re: сообщение при подключении к VPN

Добавлено: 02 окт 2018, 13:59
Vita077
прошу прощения, скрипт сработал, видимо удачный копипаст не получился при первой попытке. Благодарю Вас, очень помогли!

Re: сообщение при подключении к VPN

Добавлено: 03 окт 2018, 06:43
Vita077
в завершении, чтобы не плодить темы - данный скрипт, как я понимаю, можно применять в профиле PPP и для ppp-клиентов - соединений, поднятых при помощи usb-модемов. Интересует отправка на почту его локального адреса, полученного от оператора сотовой связи. Правильно понимаю, мне надо заменить в последней строке скрипта IP - $"caller-id"" на IP - $"local-address""?

Re: сообщение при подключении к VPN

Добавлено: 03 окт 2018, 07:39
Chupaka
Да, переменная local-address тоже доступна в скрипте, можно её использовать.

Re: сообщение при подключении к VPN

Добавлено: 20 авг 2020, 14:32
AlexPap
Добрый день.
Хотелось бы узнать, можно ли в профиле On Down: реализовать отправку uptime пользователя на почту?
Имеется ввиду - сколько пользователь работал (был подключен).

Re: сообщение при подключении к VPN

Добавлено: 20 авг 2020, 17:43
Chupaka
Добрый.

К сожалению, вызов скрипта происходит уже после отключения пользователя, поэтому "в лоб" не получится...

Жуткий костыль:
* выполняем в Терминале

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

:global login {x=1}
(почему-то если просто ":global login" в скрипте - не работает :()
* в on-up пишем

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

:global login;
:set ($login->$user) ( [/system clock get date] . " " . [/system clock get time] );
* в on-down -

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

:global login;
:log info ( $user . " was logged in at " . $login->$user )
Т.е. при логине запоминаем время, при отключении его как-то используем...