скрипт автоматического удаления очередей коих нету в адресах

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Ответить
griffff
Сообщения: 4
Зарегистрирован: 12 апр 2020, 11:12

скрипт автоматического удаления очередей коих нету в адресах

Сообщение griffff »

/queue simple :foreach i in=[find] do= {:if ([/ip address find [get $i target-addresses ]]="") do={ :removi $i; } }
Попытка написать скрипт который продеться по всем очередям посмотрет target сравнит сравнит с ip address и если нет удалит
что то не так , буду благодарен за подсказку
Аватара пользователя
Chupaka
Сообщения: 3870
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: скрипт автоматического удаления очередей коих нету в адресах

Сообщение Chupaka »

Много чего не так :) Да и ещё непонятное поведение со стороны RouterOS (обошёл использованием переменной $t):

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

/queue simple
:foreach i in=[find] do={
	:local t [get $i target];
	:if ([/ip address find address=$t]="") do={
		#remove $i;
		:put [get $i target]
	}
}
griffff
Сообщения: 4
Зарегистрирован: 12 апр 2020, 11:12

Re: скрипт автоматического удаления очередей коих нету в адресах

Сообщение griffff »

Спасибо большое ! Но что то у меня на любом микротике /ip address find address=$t]="" пустой результат всегда (((
пробывал address менять на network тк pppoe пользователи адрес весит там что соответсвует target в очередях
только все равно пустой результат ((
Аватара пользователя
Chupaka
Сообщения: 3870
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: скрипт автоматического удаления очередей коих нету в адресах

Сообщение Chupaka »

Вы пример покажите. Я себе добавил адрес 1.2.3.4/32 на роутер - и он не удалял очередь с таким target. А то что-то из вашего сообщения мне показалось, что вы пишете одно, а хотите совсем другого.
griffff
Сообщения: 4
Зарегистрирован: 12 апр 2020, 11:12

Re: скрипт автоматического удаления очередей коих нету в адресах

Сообщение griffff »

Да спасибо за Ваше внимание
ip address print
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS NETWORK INTERFACE
7 D 1.1.1.6/32 10.245.5.74 <pppoe-333>
8 D 1.1.1.6/32 10.245.5.75 <pppoe-444>


queue simple print
Flags: X - disabled, I - invalid, D - dynamic
0 name="10.245.5.74/32" target=10.245.5.74/32 parent=none
packet-marks="" priority=8/8 queue=default-small/default-small
limit-at=0/0 max-limit=30720k/30720k burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s bucket-size=0.1/0.1

1 name="10.245.5.75/32" target=10.245.5.75/32 parent=none
packet-marks="" priority=8/8 queue=default-small/default-small
limit-at=0/0 max-limit=30720k/30720k burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s bucket-size=0.1/0.1

2 name="10.245.5.76/32" target=10.245.5.76/32 parent=none
packet-marks="" priority=8/8 queue=default-small/default-small
limit-at=0/0 max-limit=30720k/30720k burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s bucket-size=0.1/0.1
Что "хотелось" что бы пройдя по очередям сличив target c network удалилась в данном примере 2 очередь где target=10.245.5.76/32 так ip address c network 10.245.5.76 нету
Возможно проблема в "/32" в target ?
Аватара пользователя
Chupaka
Сообщения: 3870
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: скрипт автоматического удаления очередей коих нету в адресах

Сообщение Chupaka »

Проблема именно в /32.

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

/queue simple
:foreach i in=[find] do={
	:local t [get $i target];
	:set t [:pick $t 0 [:find $t "/"]];
	:if ([/ip address find network=$t]="") do={
		remove $i;
	}
}
Ответить