Как в скрипте удалить все маршруты?

Обсуждение ПО и его настройки
Ответить
rstaganrog
Сообщения: 24
Зарегистрирован: 26 май 2013, 19:02

При попытке выполнить

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

foreach i in [/ip route find] do={[/ip route remove $i]}

появляется сообщение о том, что динамические маршруты не могут быть удалены. При этом не удаляются и статические.

Как можно задать удаление всех статических маршрутов? Видимо нужно уточнить конструкцию find:

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

foreach i in [/ip route find where <dynamic>] do={[/ip route remove $i]}


Как это можно сделать?


Аватара пользователя
simpl3x
Модератор
Сообщения: 1532
Зарегистрирован: 19 апр 2012, 14:03

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

ip route find where dynamic=no

или

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

ip route find where static=yes

Tab используйте, он вам покажет все варианты возможные.


rstaganrog
Сообщения: 24
Зарегистрирован: 26 май 2013, 19:02

simpl3x писал(а):

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

ip route find where dynamic=no

или

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

ip route find where static=yes

Tab используйте, он вам покажет все варианты возможные.


Спасибо. Про tab - очень полезно.

Но почему-то странно выходит:

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

[admin@MikroTik] > /ip route print                  
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
 #      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
 0 A S  ;;; 12
        0.0.0.0/0                          YTK                       1
 1 A S  ;;; 123
        0.0.0.0/0                          INFOTECS                  1
 2 A S  0.0.0.0/0                          INFOTECS                  1
                                           YTK               
 3 ADC  80.68.8.17/32      80.68.12.118    INFOTECS                  0
 4 ADC  83.221.214.195/32  93.178.107.152  YTK                       0
 5 ADC  192.168.1.0/24     192.168.1.1     bridge-local              0
[admin@MikroTik] > /ip route find where dynamic=yes
[admin@MikroTik] > /ip route find where dynamic=no
[admin@MikroTik] >


Ни с dynamic=yes, ни с dynamic=no вообще ничего не показывает...


Аватара пользователя
simpl3x
Модератор
Сообщения: 1532
Зарегистрирован: 19 апр 2012, 14:03

а он должен вам что то показать? вы ему сказали find он и нашёл.

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

foreach i in [/ip route find] do={[/ip route remove $i]}

отсюда /ip route find тоже ничего вам не покажет, но при этом делает попытку удалить.


rstaganrog
Сообщения: 24
Зарегистрирован: 26 май 2013, 19:02

simpl3x писал(а):а он должен вам что то показать? вы ему сказали find он и нашёл.

а как увидеть результат find?

--
Не могу понять, что происходит.

Цикл

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

foreach i in [/ip route find where comment="12"  ] do={[/ip route remove $i]}
удалил строку с комментом 12.

Но

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

foreach i in [/ip route find where dynamic=no] do={[/ip route remove $i]}
не удалил ничего.

В чём тут дело?


Аватара пользователя
simpl3x
Модератор
Сообщения: 1532
Зарегистрирован: 19 апр 2012, 14:03

а ip route find where static=yes ?


rstaganrog
Сообщения: 24
Зарегистрирован: 26 май 2013, 19:02

simpl3x писал(а):а ip route find where static=yes ?

Спасибо, то что доктор прописал.


Аватара пользователя
simpl3x
Модератор
Сообщения: 1532
Зарегистрирован: 19 апр 2012, 14:03

суть видимо была в том, что помимо Static и Dynamic есть еще Connected (это те, которые создаются когда прописывается адрес на интерфейсе), так вот когда dynamic=no означает что он попытается удалить и те которые connected, что впринципе не возможно, а вот static=yes будет перекрывать только статические роуты.


Ответить