Распределение IP адресов между динамическими листами

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Ответить
ivey
Сообщения: 3
Зарегистрирован: 08 окт 2018, 06:27

Распределение IP адресов между динамическими листами

Сообщение ivey »

Здравствуйте, есть такая задача - имеется некоторое количество динамических листов с ip адресами например "1" лист - 6 адресов, "2" лист - 4 адреса и т.д суть проблемы в неравномерном распределении ip адресов между динамическими листами. Возможно ли с помощью скрипта сделать следующие: проверка количества ip адресов в листе - если оно не соответствует например количеству в 5 адресов, значит проверить если в следующем листе их меньше 5 - добавить лишний ip туда, ну и т.д вообщем проверить все листы и распределить между ними равномерно ip адреса. Помогите пожалуйста решить эту задачу.
Аватара пользователя
Chupaka
Сообщения: 3880
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Распределение IP адресов между динамическими листами

Сообщение Chupaka »

Приветствую. В первой строке заполнить список листов.

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

:local lists {"test1";"test2";"test3"};

/ip firewall address-list;

:local MoveOverloaded do={
	:local num 0;
	:foreach i in=[find dynamic list=$2] do={
		:set num (num + 1);
		:if ($num > $1) do={
			add list=$3 address=[get $i address] timeout=[get $i timeout];
			remove $i;
		}
	}
};

:local total 0;
:foreach v in=$lists do={
	:set total ($total + [:len [find dynamic list=$v]]);
}

:local perList ($total / [:len $lists]);

:local prev;
:foreach v in=$lists do={
	:if ([:typeof $prev] != "nothing") do={
		$MoveOverloaded $perList $prev $v; 
	};
	
	:set prev $v;
}
ivey
Сообщения: 3
Зарегистрирован: 08 окт 2018, 06:27

Re: Распределение IP адресов между динамическими листами

Сообщение ivey »

Спасибо Вам большое буду испытывать после отпишусь.
ivey
Сообщения: 3
Зарегистрирован: 08 окт 2018, 06:27

Re: Распределение IP адресов между динамическими листами

Сообщение ivey »

Все работает! Огромное человеческое спасибо!
Ответить