Рестарт PPPOE

Автоматизация при помощи встроенного скриптового языка и RouterOS API
chas99
Сообщения: 128
Зарегистрирован: 10 фев 2017, 08:52

Рестарт PPPOE

Сообщение chas99 »

помогите пожалуйста со скриптом :oops:
провайдер при подключении к интернету выдает динамический адрес, в основном "белые", но бывает и серые, например 10.50.*.* нужно чтобы mikorik 'понимал', что внешний ip серый и тогда бы разрывал и по новой соединялся..

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

#:local reconnectPPPoE do={
    /interface pppoe-client set internet disable=yes;
    :delay 5s;
    /interface pppoe-client set internet disable=no;
#}
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Рестарт PPPOE

Сообщение Chupaka »

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

:local priv false;
:foreach a in=[ /ip address find (address~"^10\\." or address~"^192\\.") and interface=internet ] do={ :set $priv true; }
:if ($priv) do={
	/interface pppoe-client disable internet;
	:delay 5s;
	/interface pppoe-client enable internet;
}
chas99
Сообщения: 128
Зарегистрирован: 10 фев 2017, 08:52

Re: Рестарт PPPOE

Сообщение chas99 »

СПАСИБО ОГРОМНОЕ!
работает!!!

а еще подскажите пожалуйста, как сделать чтобы этот скрипт запускался автоматом при подключении к интернету?
или пусть будет как я сейчас сделал в шедулере запуск каждые 10 минут?
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Рестарт PPPOE

Сообщение Chupaka »

Можно в профиле PPP-подключения указать запуск в скрипте On-Up
1f7
Сообщения: 5
Зарегистрирован: 07 апр 2017, 08:39

Re: Рестарт PPPOE

Сообщение 1f7 »

тоже самое но без regexp:

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

:local priv false;
:foreach a in=[ /ip address and address=100.64.0.0/10 and interface=RT ] do={ :set $priv true; }
:if ($priv) do={
	/interface pppoe-client disable internet;
	:delay 5s;
	/interface pppoe-client enable internet;
}
Желаю, чтобы все!
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Рестарт PPPOE

Сообщение Chupaka »

Вы таки ещё скажите, что оно у вас работает :)
"/ip address and address" — какая-то волшебная команда =)
1f7
Сообщения: 5
Зарегистрирован: 07 апр 2017, 08:39

Re: Рестарт PPPOE

Сообщение 1f7 »

сначала 2 сети юзал, потом одну удалил, а "адрес" прибить забыл.
но, все равно, хоть один и лишний - работает :)
Желаю, чтобы все!
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Рестарт PPPOE

Сообщение Chupaka »

Вы точно ничего не путаете? С равенством у меня как-то совсем не получается (чего я, собственно, и ожидал):

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

[admin@TestPlace] /ip address> :put [ find address=192.168.0.0/16 ]               

[admin@TestPlace] /ip address> :put [ find address in 192.168.0.0/16 ] 
*1;*4;*5;*6;*7;*8;*9;*a
1f7
Сообщения: 5
Зарегистрирован: 07 апр 2017, 08:39

Re: Рестарт PPPOE

Сообщение 1f7 »

все 1х1 скопировал из On-Up.
зачем find (return position of substring or array element)?

З.Ы. а в тике есть возможность получить логи соединений?
Желаю, чтобы все!
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Рестарт PPPOE

Сообщение Chupaka »

Значит, у вас скрипт просто не работает. Вставьте его в Терминал (не забыв заключить в фигурные скобки) :)

Не путайте команду "/ip address find" и функцию скриптового языка ":find".

Логи соединений всяких TCP - смотрите NetFlow; логи соединений PPP - тут вотчина RADIUS'а. Но в этой теме это уже оффтоп :)
1f7
Сообщения: 5
Зарегистрирован: 07 апр 2017, 08:39

Re: Рестарт PPPOE

Сообщение 1f7 »

значит белый получаю случайно, хз :roll:
ок, поиграюсь на выходных
спасибо!
Желаю, чтобы все!
1f7
Сообщения: 5
Зарегистрирован: 07 апр 2017, 08:39

Re: Рестарт PPPOE

Сообщение 1f7 »

скрипт в PPP -> Profiles -> "имя профиля"(default) -> Scripts -> On Up

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

:local curIP [/ip address get [find interface="Rostelecom"] address];

:if ($curIP in 100.64.0.0/10) do={
/interface pppoe-client disable Rostelecom
:delay 5s
/interface pppoe-client enable Rostelecom
}
проверка в терминале

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

 :local curIP [/ip address get [find interface="Rostelecom"] address]; :put $curIP
пример с несколькими подсетями (ИЛИ)

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

:global newIP [/ip address get [find interface="PPPoE"] address];

:if (($newIP in 82.0.0.0/8)||($newIP in 83.0.0.0/8)) do={
/interface pppoe-client disable PPPoE
:delay 30
/interface pppoe-client enable PPPoE
}
источник _https://toster.ru/q/323124
Желаю, чтобы все!