Та просто заплутався в синтаксисі. Чомусь чекалка мікротіка матюкається на одну конструкцію.
Скрипт такий:
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 19 do={
20 :if ($status = "connected") do={
21 :log info ($prefix . "DC1 UP");
22
23 } else={
24 /interface pptp-client monitor [/interface pptp-client find name=$secondInterface] 25 once do={
26 :if ($status = "connected") do={
27 :log info ($prefix . "DC2 UP");
28 }
29
30 } else={
31 :log info ($prefix . "DCx not CONNECT!!!");
32 }
33 }
34
35 # Change VPN interface
36 /interface pptp-client disable $firstInterface
37 :delay 5;
38 /interface pptp-client enable $secondInterface
39 }
40 }
41 :log info ($prefix . "END SCRIPT");
Мікротік підключається ВПНом до датацентра, який має два входи (налаштовано 2 ВПНи, один з яких вимкнено). Скріпт перевіряє стан першого ВПНа, якщо він неживий, рестартує його. Якщо це не допомагає - пеерключається на другий. Якщо хоч один з ВПНів живий - припиняє роботу. Це такий має бути алгоритм.
Чекалка зупиняється на 30 строчці.
__________________
Если все против тебя - может, это ты против всех?
|