ТавроФорум

ТавроФорум (https://forum.tavria.org.ua/index.php)
-   Решение бытовых проблем (https://forum.tavria.org.ua/forumdisplay.php?f=28)
-   -   Скрипти для Мікротіка (https://forum.tavria.org.ua/showthread.php?t=105185)

Rambo 15.06.2021 16:10

Скрипти для Мікротіка
 
Вітаю.

А хтось займається програмуванням таких залізяк? Є питання.

_basil_ 17.06.2021 22:45

По необхідності щось потроху для себе пишемо, але не так, щоб в гуру записуватись.

Rambo 19.06.2021 22:31

Та просто заплутався в синтаксисі. Чомусь чекалка мікротіка матюкається на одну конструкцію.
Скрипт такий:

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 строчці.

_basil_ 20.06.2021 18:30

перенос оператора "once" на новую строку (строки 24-25) не влияет?

_basil_ 20.06.2021 21:55

Цитата:

/interface pptp-client monitor [/interface pptp-client find name=$secondInterface]
once do={
Если в скрипте действительно так, то проверка проводится не однократно, а постоянно до ручного прерывания

deivan 22.06.2021 21:42

було б непогано delay збільшити, це ж асінхронщина, можливо не встигає


Текущее время: 13:32. Часовой пояс GMT +3.

Перевод: zCarot Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.