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

Автоматизация при помощи встроенного скриптового языка и RouterOS API
playful2017
Сообщения: 3
Зарегистрирован: 23 янв 2018, 11:28

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

Сообщение playful2017 »

добрый день, подскажите пожалуйста как реализовать,
я хочу сделать информирование, о подключении клиента к vpn, через e-mail.
1.JPG
первая команда не выводит вообще никакого результата(хотя подключение есть)
вторая команда выводит, но при добавлении в скрипт и выполнении его, приходит не данные а пустое сообщение.
скрин скрипта
2.JPG
так же на просторах интернета нашел код, но у меня он не работает, и разобрать синтаксис я пока не могу

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

: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""
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Chupaka
Сообщения: 4098
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение 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.
playful2017
Сообщения: 3
Зарегистрирован: 23 янв 2018, 11:28

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

Сообщение 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""
Аватара пользователя
Chupaka
Сообщения: 4098
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Это значит, заработало, или это как будто был вопрос?..
playful2017
Сообщения: 3
Зарегистрирован: 23 янв 2018, 11:28

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

Сообщение playful2017 »

Chupaka писал(а): 23 янв 2018, 14:26 Это значит, заработало, или это как будто был вопрос?..
Заработало, спасибо за разъяснение куда вставлять скрипт=)
Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

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

Сообщение 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""
Аватара пользователя
Chupaka
Сообщения: 4098
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение 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
Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

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

Сообщение Vita077 »

у меня с таким синтаксисом не работает (RouterOS 6.39.3), видимо я логику не понимаю, скорее просто не знаю как... Работает скрипт, который я приводил выше. Правильно понимаю, надо ввести локальные переменные email 1 и email 2?
Аватара пользователя
Chupaka
Сообщения: 4098
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Нет, вместо email 1 и email 2 надо вбить ручками нужные email'ы. Что именно не работает? Что вы делаете, чего ожидаете и что идёт не так, как вы ожидаете? Телепатов тут, к сожалению, нет.
Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

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

Сообщение Vita077 »

Просто заменяю рабочий скрипт для одного email (приводил чуть выше) Вашим, с указанием двух адресов. В итоге ничего не происходит - в логах отображается только изменение профиля РРР, подключение/отключение vpn-клиента. В идеале хочется отправлять на 2 адреса, не хочу создавать второе подключение с отдельным профилем - как я понимаю, это очень даже "не по феншую". Ну и совсем было бы идеальным - отправлять сообщение не при переподключении клиента, а при смене его Caller ID.
Аватара пользователя
Chupaka
Сообщения: 4098
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Вы бы привели конкретный скрипт, который не работает, раз задаёте такие вопросы выше.

А как вы себе представляете смену Caller ID без переподключения?
Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

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

Сообщение 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
Аватара пользователя
Chupaka
Сообщения: 4098
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение 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 можно попробовать сохранять в комментарий к учётной записи. Это если их много...
Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

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

Сообщение Vita077 »

отправка писем в последнем варианте тоже не происходит...
С Caller ID - не критично, переподключения бывают редко, больше по причине отключения электроэнергии. В приоритете многоадресная отправка. Я правильно понимаю, в работающем скрипте можно добавить более 2 адресатов - просто указывать остальные с новой строки?
Аватара пользователя
Chupaka
Сообщения: 4098
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Отправка не происходит - а что происходит? В логе пусто?

Если "с новой строки" значит "скопировать полностью всю строку" - да, можно и так.
Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

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

Сообщение Vita077 »

прошу прощения, скрипт сработал, видимо удачный копипаст не получился при первой попытке. Благодарю Вас, очень помогли!
Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

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

Сообщение Vita077 »

в завершении, чтобы не плодить темы - данный скрипт, как я понимаю, можно применять в профиле PPP и для ppp-клиентов - соединений, поднятых при помощи usb-модемов. Интересует отправка на почту его локального адреса, полученного от оператора сотовой связи. Правильно понимаю, мне надо заменить в последней строке скрипта IP - $"caller-id"" на IP - $"local-address""?
Аватара пользователя
Chupaka
Сообщения: 4098
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Да, переменная local-address тоже доступна в скрипте, можно её использовать.
AlexPap
Сообщения: 6
Зарегистрирован: 09 июл 2020, 16:11

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

Сообщение AlexPap »

Добрый день.
Хотелось бы узнать, можно ли в профиле On Down: реализовать отправку uptime пользователя на почту?
Имеется ввиду - сколько пользователь работал (был подключен).
Аватара пользователя
Chupaka
Сообщения: 4098
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение 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 )
Т.е. при логине запоминаем время, при отключении его как-то используем...