LINUX.ORG.RU
решено ФорумAdmin

Скрипт MikroTik


1

1

Смотрю, не назначем ли в дейфолт-гейтвее интерфесом pppoe2:

[admin@MikroTik] > :if (:len [/ip route find where gateway=pppoe2 and dst-address=0.0.0.0/0] = 0) do={:put "ololo"};
после запуска команды ничего не отображается, любые другие действия по условию, соответственно, не производятся
при том что:
[admin@MikroTik] > :put [:len [/ip route find where gateway=pppoe2 and dst-address=0.0.0.0/0]];                                
0
Пример взят из подручного скрипта, если есть соображения как лучше проверить интерфейс на который выставлен дефолт-гейтвей - здорово.

Спасибо за внимание.

★★★★

Ответ на: комментарий от tazhate

Вопрос в том что первая строчка скрипта оперирует не тем значением которое возвращает вторая. Или я чего-то совсем не понял.
Как вариант:

если есть соображения как лучше проверить интерфейс на который выставлен дефолт-гейтвей - здорово

Yustas ★★★★
() автор топика

Не знаю что там у микротик, но подозреваю, что

:put :len может распечатать нулем и false и «» и что-нибудь из этой серии. Тогда твое условие в первом пункте может вполне корректно не выполняться.

Попробуй :if :len < 1 или что-то из этой серии.

BaBL ★★★★★
()
Ответ на: комментарий от BaBL

Пробовал:

Script Error: cannot compare if nothing is more than time interval
т.е. всё таки значение пустое, но функция :len не может выдать его в нормальном виде на выходе.

Yustas ★★★★
() автор топика

По итогам:

:if ( [/ip route get [find where dst-address=0.0.0.0/0] gateway] != pppoe2 ) do={:put "ololo"};


Комрадам BaBL и tazhate спасибо за советы.
Yustas ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.