рассылка емаил в скрипте..

Обсуждение ПО и его настройки
userdx
Сообщения: 7
Зарегистрирован: 01 янв 2014, 20:27

Приветствую уважаемых микротик-гуру, а также не очень гуру и совсем не гуру, т.е. таких как я!

По работе всё чаще приходится сталкиваться с оборудованием микротик, поэтому решил поставить рб951 домой, чтобы неспеша осваивать все тонкости и нюансы данных приборов.
Надо сказать, что в целом, от этого оборудования я восторге, хотя с непривычки кажется не логичными команды управления, ну это лишь вопрос привычки.

Базовая настройка не вызвала у меня каких-либо трудностей, а даже там где я озадачился, гугл помог.

В данный момент, схема организации связи такая:

eth1_wan смотрит в локалку провайдера, а k-tel поднимает l2tp; в бридже понятное дело оставшиеся эзернеты и wlan;
[root@r1.ds.lab] > int print
Flags: D - dynamic, X - disabled, R - running, S - slave
# NAME
0 R ;;; main uplink
eth1_wan
1 ;;; reserved uplink
eth2
5 R wlan1
6 R bridge-local
10 R k-tel l



Теперь я хочу реализовать следующий алгоритм (посредством скрипта):
как только поднимается l2tp-сессия через k-tel, мне на email приходит публичный адрес моего микротика.

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

/tool e-mail send to=получатель@mail.ru from=отправитель@gmail.com subject="тема" body="текст сообщения" tls=yes


Хочу обратить внимание, что е-мейл клиент микротика у меня уже сконфигурирован.

Ну и в конечном счете скрипт выглядит так:

#l2tp interface name
:global MainIf k-tel

#local wan interface name
:global RsrvIf eth1_wan

#l2tp interface ip address
:global MainIfAddress ""

#local wan interface ip address
:global RsrvIfAddress ""

:global MainIf
:global MainIfAddress ""
:set MainIfAddress [/ip address get [find interface=$MainIf] address]


:global RsrvIf
:global RsrvIfAddress ""
:set RsrvIfAddress [/ip address get [find interface=$RsrvIf] address]


/tool e-mail send to=получатель@mail.ru from=отправитель@gmail.com subject="тема" body="publicip=$MainIfAddress local ip=$RsrvIfAddress" tls=yes



Под RsrvIfAddress в данном случае подразумевается серый адрес в локалке провайдера (отголоски исходного скрипта, пусть будут);

Вообщем-то в таком виде скрипт работает, но только если запускать его руками. Как сделать так, чтобы сообщение уходило именно в момент когда поднялся l2tp через k-tel?

И попутно вопрос, есть ли в микротике команда выводящая весь конфиг устройства полностью, что-то вроде show running-config в циско?


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

Самое простое решение это шедулер который скажем каждые секунд 10 проверяет ваш l2tp
Можно конечно реализовать реакцию по событию но это опять же скрипт который тупо постоянно висит и наблюдает

Весь конфиг /export compact


Есть интересная задача и бюджет? http://mikrotik.site
userdx
Сообщения: 7
Зарегистрирован: 01 янв 2014, 20:27

Шедулер - первое, что пришло в голову. Но при таком подходе и с данным скриптом (а другого, с циклами и условиями у меня нет), он будет отправлять оповещения каждый раз когда запускается задача, т.е. меня попросту заспамит.

Намедни наткнулся на netwatch; пока что использовал его вместе со своим скриптом.
Т.е. netwatch пингает 8.8.8.8, если доступен, то запускает скрипт.

Но на мой взгляд это как-то кандово чтоли.
Наверняка есть более изящный подход. Может кто-нибудь уже сталкивался с подобной задачей?


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

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


Есть интересная задача и бюджет? http://mikrotik.site
userdx
Сообщения: 7
Зарегистрирован: 01 янв 2014, 20:27

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


Просто не нашел примеров реализации выполнения команды по условию (хотя бы даже в общем случае), поэтому и запросил, может кто-то уже сталкивался.

Ну и чтобы не создавать новую ветку в другом разделе, ряд коротких вопросов, некоторые из них я пытался найти на вики, но безрезультатно:

1. Можно ли при выполнении export compact скрыть все пароли звездочками?
2. в циско можно было детально отследить маршрут командой show ip route <destination ip>, есть ли аналогичный метод для РОС (ip route print не считается, поскольку отображает всю картину целиком)?
3. модификатора вывода, опять же на оборудовании циско можно было выводить информацию избирательно, типа sh run | i <keyword>, как реализована эта функция в РОС?
4. в циско-терминале было очень полезное сочетание клавиш ctrl+w, которое удаляет до пробела последнее набранное слово, на микротик-вики ничего подобного не упоминается, неужели нету???


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

Условие if (условие) do={тело}

2. Трассировку ни кто еще не отменял
3. find и get


Есть интересная задача и бюджет? http://mikrotik.site
userdx
Сообщения: 7
Зарегистрирован: 01 янв 2014, 20:27

2. Трассировку ни кто еще не отменял
3. find и get


2. трассировка в явном виде и оперативно не покажется с какого интерфейса резолвится айпишник (допустим их много);
3. прошу прощения за твердолобость, но можно пример использования find и get, допустим пытаюсь написать:

ip route find 192.168.1.1

при этом я подразумеваю "показать перечень маршрутов, в конфигурации которых явно присутствует 192.168.1.1". При этом ничего не получаю.


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

трассировка покажет через какой шлюз ушел пакет. Собственно большего и не надо

/ip route print where dst-address=0.0.0.0/0


Есть интересная задача и бюджет? http://mikrotik.site
userdx
Сообщения: 7
Зарегистрирован: 01 янв 2014, 20:27

Благодарю Вас за пояснения.


userdx
Сообщения: 7
Зарегистрирован: 01 янв 2014, 20:27

vqd писал(а): /ip route print where dst-address=0.0.0.0/0


А почему ip address с таким же синтаксисом не работает?

[root@r1] > ip address pr
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS NETWORK INTERFACE
0 ;;; default configuration
192.168.55.5/24 192.168.55.0 wlan1
1 D 10.58.187.222/24 10.57.187.0 eth5_wan


[root@r1] > ip address print where address=10.58.187.222/24
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS NETWORK INTERFACE
[root@r1] >
[root@r1] > ip address print where address=10.58.187.222
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS NETWORK INTERFACE
[root@r1] >


Ответить