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

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

Добавлено: 07 июн 2013, 16:16
rstaganrog
При попытке выполнить

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

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]}


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

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

Добавлено: 07 июн 2013, 16:38
simpl3x

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

ip route find where dynamic=no

или

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

ip route find where static=yes

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

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

Добавлено: 07 июн 2013, 17:55
rstaganrog
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 вообще ничего не показывает...

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

Добавлено: 07 июн 2013, 19:00
simpl3x
а он должен вам что то показать? вы ему сказали find он и нашёл.

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

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

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

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

Добавлено: 07 июн 2013, 19:25
rstaganrog
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]}
не удалил ничего.

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

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

Добавлено: 07 июн 2013, 20:22
simpl3x
а ip route find where static=yes ?

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

Добавлено: 11 июн 2013, 12:53
rstaganrog
simpl3x писал(а):а ip route find where static=yes ?

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

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

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