Выбор VPN для подключения к датацентру

Обсуждение оборудования и его настройки
Ответить
shad68
Сообщения: 3
Зарегистрирован: 30 май 2020, 11:00

Приветствую.
Та ситуация, когда бревна в глазу не вижу. Пишу скрипт для проверки точки входа на датацентр и переключения VPN в случае отсутствия подключения

1 # Set local variables
2 :local firstInterface "DC1";
3 :local secondInterface "DC2";
4 :local pingTo1 "172.17.10.254";
5 :local pingCount 5;
6 :local stableConnect 70;
7 :local prefix ">>> ";
8 :log info ($prefix . "START PING to $pingTo1");
9 /interface pptp-client {
10 # Get ping successfully packets. In percent
11 :local pingStatus ((( [/ping $pingTo1 count=$pingCount] ) / $pingCount) * 100);
12:log info ($pingStatus . "% END PING");
13 :if ($pingStatus < $stableConnect) do={
14 :log info ($prefix . "NO DC1!!!");
15 /interface pptp-client enable $firstInterface
16 :delay 5;}
17 # Check VPN
18 /interface pptp-client monitor [/interface pptp-client find name=$firstInterface] once do={
19 :if ($status = "connected") do={
20 :log info ($prefix . "DC1 UP");
21 }
22 } else={
23 /interface pptp-client monitor [/interface pptp-client find name=$secondInterface] once do={
24 :if ($status = "connected") do={
25 :log info ($prefix . "DC2 UP");
26 }
27 }
28 } else={
29 :log info ($prefix . "DCx not CONNECT!!!");
30 # Change VPN interface
31 /interface pptp-client disable $firstInterface
32 :delay 5;
33 /interface pptp-client enable $secondInterface
34 }
35 }
36 :log info ($prefix . "END SCRIPT");

По идее, скрип должен проверять подключение ДС1, если не работает - переподключить, если не заработает переподключиться на ДС2. Если какое-то из работает - завершить работу.

Чекалка синтаксиса останавливается на 22 строке, указывая на ошибку. Проверил несколько раз в нескольких направлениях. Ошибки не вижу. Что там не так?


Аватара пользователя
podarok66
Модератор
Сообщения: 4360
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Строка

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

/interface pptp-client monitor [/interface pptp-client find name=$firstInterface] once do={....
не может иметь продолжения в виде else. В том же случае, если вы относите else к связке :if , то там порядок скобок немного другой. Вместо

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

/interface pptp-client monitor [/interface pptp-client find name=$firstInterface] once do={
:if ($status = "connected") do={
:log info ($prefix . "DC1 UP");
}
} else={
/interface pptp-client monitor [/interface pptp-client find name=$secondInterface] once do={
:if ($status = "connected") do={
:log info ($prefix . "DC2 UP");
}
}
} else={
:log info ($prefix . "DCx not CONNECT!!!");
как-то типа такого:

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

/interface pptp-client monitor [/interface pptp-client find name=$firstInterface] once do={
:if ($status = "connected") do={
:log info ($prefix . "DC1 UP");

} else={
/interface pptp-client monitor [/interface pptp-client find name=$secondInterface] once do={
:if ($status = "connected") do={
:log info ($prefix . "DC2 UP");
}

} else={
:log info ($prefix . "DCx not CONNECT!!!");
}
}
В сам скрипт не вникал, тут вам самому править, чего и как, но по-моему в этом виде не взлетит. А с ошибкой, просто синтаксис нужно соблюдать. А фигурные скобки - это обособленные области определения, практически минискрипты в скрипте. С ними аккуратнее и внимательнее надо.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
shad68
Сообщения: 3
Зарегистрирован: 30 май 2020, 11:00

В вашем варианте тормозит на последнем else. Но направление мыслей понятно. Спасибо.


Аватара пользователя
podarok66
Модератор
Сообщения: 4360
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Да у меня не вариант, у меня пример синтаксиса. Я ж написал, что не вникал в сам скрипт.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Ответить