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

Помощь с написанием скрипта — случайный выбор из числа интерфейсов

Добавлено: 14 ноя 2019, 12:51
dmitriy_k
Добрый день. Я вчера открыл для себя возможность использования скриптов в Mikrotik :)

Есть пять-шесть интерфейсов с именами «l2tp-*», которые отвечают за VPN-подключение к различным серверам.

Мне бы хотелось иметь постоянное подключение к VPN, в которое будут направляться пакеты. Но соединение не может держаться бесконечно при отсутствии данных, и через час-два соединение обычно разрывается (потому что ночью канал неактивен). Подскажите, как реализовать отключение единственного включённого, после случайный выбор из числа существующих интерфейсов одного, и его включение? Поставлю такое на каждые полтора часа, например.

Re: Помощь с написанием скрипта — случайный выбор из числа интерфейсов

Добавлено: 14 ноя 2019, 13:00
xvo
А не проще держать соединение поднятым, например пингуя что-нибудь раз в несколько минут? :)

Re: Помощь с написанием скрипта — случайный выбор из числа интерфейсов

Добавлено: 16 ноя 2019, 11:47
dmitriy_k
Мне хотелось бы увидеть подсказку, как это скриптовать, а не изменение формулировки задачи.

Re: Помощь с написанием скрипта — случайный выбор из числа интерфейсов

Добавлено: 16 ноя 2019, 12:17
bst-botsman
dmitriy_k писал(а): 16 ноя 2019, 11:47 Мне хотелось бы увидеть подсказку, как это скриптовать, а не изменение формулировки задачи.
Если это Академический интерес- то Вам нужно обращаться на курсы Mikrotik, а если реальная практическая задача - то Вам подсказали более простое и изящное решение...

Re: Помощь с написанием скрипта — случайный выбор из числа интерфейсов

Добавлено: 16 ноя 2019, 19:55
podarok66
Ну что вы в самом деле. Генератор случайного числа в заданных параметрах на Микротике написать достаточно сложно. Но если пользоваться интернетом, то вполне можно организовать свой рандомайзер очень даже просто и не затратно в смысле ресурсов. Вот вам пример получения рандомного числа в отрезке от 1 до 6 :

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

{
:global RandomOrg "";
/tool fetch url="https://www.random.org/integers/\?num=1&min=1&max=6&col=1&base=10&format=plain&rnd=new" keep-result=yes dst-path="pass.txt";
delay 3;
:global RandomOrg [/file get pass.txt contents];
/file remove pass.txt;
:put $RandomOrg
}
Но на случай потери канала придётся придумывать ещё какой-то способ переключить канал. Но я бы настолько жестоко заморачивался бы лишь при крайней необходимости :-):
Если есть свой сервер на , тогда генерация порядка срабатывания интерфейсов на python может выглядеть так:

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

import random 
    print random.sample(range(1, 7), 6)