скрипт проверки и переподключения ppp-соединений

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

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

#-----------------------------------------------------------------------------------------
# скрипт проверки активности всех ppp-соединений
#-----------------------------------------------------------------------------------------
# by Rextended https://forum.mikrotik.com/viewtopic.php?f=9&t=83132
# modified Sertik 20/09/2022

# если по тоннелю пинга нет, то осуществляется разрыв тоннеля для переподключения

# внимание ! скрипт будет отключать активное vpn-соединение с админом, т.к. до него пинга не будет !
# поэтому в скрипте сделан обход удаления данного соединения (задаётся в adminClient, должен соответствовать ppp secret)

:local adminClient "you ppp secret admins` name"

:local pppTest value=[/ppp active find];
:local pingNumber value=2;
:local pingMin value=1;
:foreach userTest in=$pppTest do={
 :local pingOk value=[:ping [/ppp active get $userTest value-name=address] count=$pingNumber]
 :if (($pingOk < $pingMin) && ([/ppp active get $userTest value-name=name]!=$adminClient)) do={
  :log warning message=([/ppp active get $userTest value-name=service] . " auto disconnected: ". $pingOk . " ping ok over " . $pingNumber . " " . [/ppp active get $userTest value-name=name] . " " . [/ppp active get $userTest value-name=address])
/ppp active remove $userTest
 }
}
если нужно проверять только определенный вид ppp замените строку :

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

# :local pppTest value=[/ppp active find];
на строку, например

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

# :local pppTest value=[/ppp active find where service=pptp];
Для использования поставьте этот скрипт в Планировщик с нужным интервалом (оптимально не менее 30 сек).


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить