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

нужна помощь с конструкцией в скрипте

Добавлено: 03 фев 2019, 23:13
Sertik
Нужна помощь с конструкцией в скрипте (см. под спойлером).

Скрипт получает в переменную $GatewayName название активного интерфейса в Интернет с дефолтным маршрутом (dst-adress=0.0.0.0/0). Но работает нормально только если на роутере один активный шлюз с таким маршрутом.
Если таких маршрутов несколько, то как из них выбрать (найти скриптом) нужный шлюз не имеющий комментария (исходим из условия, что остальные такие маршруты имеют какие-то комментарии).
Сломал голову, не получается. Нужно именно по комментарию различить или по маркировке, по дистанции - нельзя.

 
# Get address active gateway - in var $activeGateway
/ip route
{ :local counter;
:foreach counter in=[find dst-address=0.0.0.0/0] do={
:if ([get $counter active] = true) do={
:set $activeGateway [get $counter gateway];
} }}
:log info $activeGateway;


# Get string in <gateway-status>
:local GatewayName;
:set $GatewayName [ :tostr [ /ip route get [ find gateway=$activeGateway dst-address=0.0.0.0/0] gateway-status ]];
:log warning $GatewayName;

Re: нужна помощь с конструкцией в скрипте

Добавлено: 04 фев 2019, 00:28
Sertik
Из конкретного затруднения я вышел добавив в скрипт получение дистанции активного шлюза и запрос имени интерфейса активного шлюза уже с указанием дистанции - тогда есть возможность получать это имя, если дистанции разные (например, при резервировании).

# Get address active gateway - in var $activeGateway
/ip route
{ :local counter;
:foreach counter in=[find dst-address=0.0.0.0/0] do={
:if ([get $counter active] = true) do={
:set $activeGateway [get $counter gateway]; :set $Gdistance [get $counter distance];
} }}
:log info $activeGateway;
:log info $Gdistance;


# Get string in <gateway-status>
:local GatewayStatus;
:set $GatewayStatus [ :tostr [ /ip route get [ find gateway=$activeGateway dst-address=0.0.0.0/0 distance=$Gdistance] gateway-status ]];
:log warning $GatewayStatus;

Однако это работает только при разных дистанциях - мою задачу выполняет, но костыльно как-то. Хотелось бы универсальности. Почему то нельзя получить routing-mark и comment таким же способом ... Где то видно не так пишу.

Re: нужна помощь с конструкцией в скрипте

Добавлено: 04 фев 2019, 00:46
Sertik
Всё, разобрался. Всё же синтаксис у скриптов Рос весьма не "дружелюбный". Хоть бы закономерности какие-то были - везде есть отличия ...