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

Скрипт удаления ppp

Добавлено: 03 ноя 2021, 15:05
vasgor
Есть необходимость, например перед обновлением mikrotik, дропать PPP соединения, чтобы клиенты плавно переключались на другой.
Для этого был написан скрипт:

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

:local NumConns [/ppp active print count-only]
:log info ("Preparing to disconnect " . $NumConns . " VPN Sessions")
:local iCounter 0
:while ($iCounter < $NumConns) do={
	:log info ("Removing VPN Session #" . $iCounter)
	/ppp active remove $iCounter
                :delay 1s
	:set iCounter ($iCounter + 1)
}
Но проблема в том, что о дропает до какого-то момента, а потом перестает. Пробовали разные варианты, в итоге ничего не вышло...

Прошу знатоков помочь в решении данной задачи! :)

Re: Скрипт удаления ppp

Добавлено: 03 ноя 2021, 19:15
Chupaka
Пользоваться порядковым номером нужно только при ручной работе, потому что он существует и обновляется после команды print. Более того, если кто-то в процессе отключится - его отключить больше не получится.

А вам именно плавно надо, по одному в секунду? Сразу всех не прокатит?

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

/ppp active remove [find]
Тогда надо через :foreach, ну и ловить ошибки при попытке удаления:

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

:foreach i in=[ /ppp active find ] do={
	:do { /ppp active remove $i; } on-error={};
	:delay 1s;
}

Re: Скрипт удаления ppp

Добавлено: 03 ноя 2021, 19:39
vasgor
Да, сразу всех не прокатит, от 1 до 5 в секунду нужно.
Поэтому и делали через delay.