= Соединения OVPN и PPP [и async???] нужно проверить, но я думаю, что скрипт работает и для этих типов соединений. Как только получу подтверждение — уберу * в заголовке. Это и есть сам скрипт, я считаю, что он подходит для всех типов PPP-соединений, но тестировал только PPPOE, PPTP, L2TP, SSTP, OVPN и PPP не проверял. Синтаксис совместим с версиями 6.7+, не уверен, будет ли работать на 5.x и ниже.
Что делает это расписание на сервере с любым типом «ppp»:
Каждые 20 минут (включая перезагрузки routerboard) проверяет все активные ppp-соединения, если из 2 пингов хотя бы 2 не прошли — соединение закрывается (и фиксируется в логе). При каждом запуске и завершении скрипта записываются логи.
Просто вставьте это в терминал:
/system scheduler
add disabled=no interval=20m name=check-ppp-client on-event=":log info message=\"*** старт проверки любого ppp клиентского соединения ***\";\r\n:local pppTest value=[/ppp active find];\r\n:local pingNumber value=2;\r\n:local pingMin value=1;\r\n:foreach userTest in=\$pppTest do={\r\n :local pingOk value=[:ping [/ppp active get \$userTest value-name=address] count=\$pingNumber]\r\n :if ( \$pingOk < \$pingMin) do={\r\n :log warning message=([/ppp active get \$userTest value-name=service] . \" автоотключение: \" . \$pingOk . \" пинг прошёл из \" . \$pingNumber . \" \" . [/ppp active get \$userTest value-name=name] . \" \" . [/ppp active get \$userTest value-name=address])\r\n /ppp active remove \$userTest\r\n }\r\n};\r\n:log info message=\"*** проверка любых ppp клиентских соединений завершена ***\";\r\n" policy=ftp,read,write,test start-date=jan/01/2002 start-time=00:20:00
Вот версия без кода под scheduler:
:log info message="*** старт проверки любого ppp клиентского соединения ***";
: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) do={
:log warning message=([/ppp active get $userTest value-name=service] . " автоотключение: " . $pingOk . " пинг прошёл из " . $pingNumber . " " . [/ppp active get $userTest value-name=name] . " " . [/ppp active get $userTest value-name=address])
/ppp active remove $userTest
}
};
:log info message="*** проверка любых ppp клиентских соединений завершена ***";
Если кто-то найдёт баг — пожалуйста, сообщайте. Спасибо.
Что делает это расписание на сервере с любым типом «ppp»:
Каждые 20 минут (включая перезагрузки routerboard) проверяет все активные ppp-соединения, если из 2 пингов хотя бы 2 не прошли — соединение закрывается (и фиксируется в логе). При каждом запуске и завершении скрипта записываются логи.
Просто вставьте это в терминал:
/system scheduler
add disabled=no interval=20m name=check-ppp-client on-event=":log info message=\"*** старт проверки любого ppp клиентского соединения ***\";\r\n:local pppTest value=[/ppp active find];\r\n:local pingNumber value=2;\r\n:local pingMin value=1;\r\n:foreach userTest in=\$pppTest do={\r\n :local pingOk value=[:ping [/ppp active get \$userTest value-name=address] count=\$pingNumber]\r\n :if ( \$pingOk < \$pingMin) do={\r\n :log warning message=([/ppp active get \$userTest value-name=service] . \" автоотключение: \" . \$pingOk . \" пинг прошёл из \" . \$pingNumber . \" \" . [/ppp active get \$userTest value-name=name] . \" \" . [/ppp active get \$userTest value-name=address])\r\n /ppp active remove \$userTest\r\n }\r\n};\r\n:log info message=\"*** проверка любых ppp клиентских соединений завершена ***\";\r\n" policy=ftp,read,write,test start-date=jan/01/2002 start-time=00:20:00
Вот версия без кода под scheduler:
:log info message="*** старт проверки любого ppp клиентского соединения ***";
: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) do={
:log warning message=([/ppp active get $userTest value-name=service] . " автоотключение: " . $pingOk . " пинг прошёл из " . $pingNumber . " " . [/ppp active get $userTest value-name=name] . " " . [/ppp active get $userTest value-name=address])
/ppp active remove $userTest
}
};
:log info message="*** проверка любых ppp клиентских соединений завершена ***";
Если кто-то найдёт баг — пожалуйста, сообщайте. Спасибо.