Переподключение зависших соединения к интернету

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

И так в одном офисе у меня роутер подключается к инету и зависает соединение.
Вот написал скриптик который переключает это соединение

:log info "*************************************"
:log info " vvod peremennih"
:log info "*************************************"
#Glavniy interface name
:local MainIf "l2tp-flex"

:log info "*************************************"
:log info " End peremennih"
:log info "*************************************"

:local PingCount 3
:log info "*************************************"
:log info " Proverka interneta"
:log info "*************************************"

#www.ru
:local PingTarget1 194.87.0.50

#ya.ru
:local PingTarget2 87.250.250.203

#google dns
:local PingTarget3 8.8.8.8
:log info "******* servers***********************"


#Check main internet connection
:local MainIfInetOk false;

:log info "pinguem internet"
:log info "******* ping***********************"
:local PingResult1 [/ping $PingTarget1 count=$PingCount interface=$MainIf]
:log info "******* ping $PingTarget1***********************"
:local PingResult2 [/ping $PingTarget2 count=$PingCount interface=$MainIf]
:log info "******* ping $PingTarget2***********************"
:local PingResult3 [/ping $PingTarget3 count=$PingCount interface=$MainIf]
:log info "******* ping $PingTarget3***********************"

:set MainIfInetOk (($PingResult1 + $PingResult2 + $PingResult3) >= (2 * $PingCount))

:log info "test internet $MainIfInetOk"
:if ($MainIfInetOk = false) do={
/log error "Internet upal"
#Glavniy interface upal
:interface l2tp-client disable $MainIf;
:interface l2tp-client enable $MainIf;
}
:log info "******* ping***********************"
:put "MainIfInetOk=$MainIfInetOk"

:if ($MainIfInetOk = true) do={
:log info "Internet OK"
}


:log info "*************************************"
:log info "End Proverka interneta"
:log info "*************************************"


Stas788
Сообщения: 66
Зарегистрирован: 18 окт 2017, 01:43

Здравствуйте!

у вас используется интерфейс :local MainIf "l2tp-flex", а у меня interface-list=ISP.
как поправить ваш скрипт, чтобы у меня с интерфейс листом заработало? какую переменную вместо :local MainIf "l2tp-flex" нужно использовать?


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

Данный скрипт есть костыль. Будет работать только в случае если у ас PtP интерфейсы.
Ну и если вы хотите использовать список интерфейсов то оборачивайте его в цикл foreach и прогоняйте по каждому интерфейсу в списке ну и момент отключения и включения интерфейсов нужно поправить.

В общем проще с нуля написать человеческий скрипт который проверяет работоспособность основываясь на таблице маршрутизации.

Если в двух словах то для каждого оператора создаем свою таблицу, жестко привязываем марки к нужным таблицам (это нужно что бы в случае если интерфейс отвалится микротик не перекинул в main) Дальше все это скриптом обрабатываете. Тут опять же можно сваять решение универсальное которое само будет искать внешних операторов и проверять их доступность, а можно с жесткой привязкой по каждому оператору. Я лично второй вариант предпочитаю ибо периодически для каждого оператора нужно свои действия проделать.


Есть интересная задача и бюджет? http://mikrotik.site
Stas788
Сообщения: 66
Зарегистрирован: 18 окт 2017, 01:43

насколько я понял, MainIf - это наименование переменной для интерфейса, а какая будет переменная для интерфейс-листа? Не хотелось бы для моих двух интерфейсов загрузать два ваших скрипта и каждые 1-5минут проверять наличие интернета на каждом из них. Т.к. во-первых один будет заведомо отключен, а во-вторых боюсь создать лишнюю нагрузку на железо. Предполагаю, что заменой переменной инферфейса на переменную листа можно поправить ваш скрипт. Как думаете?


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

Это слава богу не мой скрипт ))

Про интерфейс-лист я Вам уже ответил


Есть интересная задача и бюджет? http://mikrotik.site
Stas788
Сообщения: 66
Зарегистрирован: 18 окт 2017, 01:43

я далек от самостоятельного написания скриптов. У меня на микротике два провайдера pppoe и usb-модем mts. У них в routes list выставлены 1 и 2. Поэтому если пропадает один, то переключается на другой. А теперь я озадачен тем, как этот скрипт из сабж прикрутить к моей ситуации. Интересует готовое решение. А предложение типа "возьми и напиши" не принимаются - не умею, умел бы - написал бы сам и сюда не обращался.... =) Помогите плз люди добрые )))


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

Stas788 писал(а): 22 ноя 2018, 02:53 А предложение типа "возьми и напиши" не принимаются - не умею
Ну для этого случая баннер сверху есть


Есть интересная задача и бюджет? http://mikrotik.site
Ответить