Страница 1 из 1

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

Добавлено: 20 сен 2022, 18:45
Sertik

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

#-----------------------------------------------------------------------------------------
# скрипт проверки активности всех 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 сек).