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

MikroTik - проблема со скриптом (не работает = и != в одном :if)

 ,


0

1

Добрый день, уважаемые!

Есть несложный скрипт, привожу его часть:

        :local name ([get $lease host-name] . "." . $domain);
        :local address [get $lease address];
    
        /ip dns static;
        :foreach static in=[find] do={
            :if ([get $static name]=$name) do={
                remove $static;
            }
        }

В таком виде все работает, все хорошо. Но стоит мне изменить 6-ю строчку скрипта следующим образом, он перестает работать:

            :if ([get $static name]=$name && [get $static address]!=$address) do={

Не подскажите, в чем может быть дело?



Последнее исправление: ravdinve (всего исправлений: 4)
Ответ на: комментарий от h578b1bde
            :if (([get $static name]=$name) && ([get $static address]!=$address)) do={

Вот так? Не исправило ситуацию.

Еще интереснее, что следующее выражение тоже не работает:

            :if ([get $static name]=$name) do={
                :if ([get $static address]!=$address) do={

А такое выражение, напротив, работает. Но оно делает не то, что нужно, правда...

            :if ([get $static name]=$name && [get $static address]=$address) do={

ravdinve
() автор топика
Ответ на: комментарий от dexitry

В смысле? Что вы хотите этим сказать?

ravdinve
() автор топика

Неужели никто не знает?

ravdinve
() автор топика
:local name ([get $lease host-name] . "." . $domain);
:local address [get $lease address];
    
/ip dns static;
:foreach static in=[find] do={
    :local static_name [get $static name];
    :local static_address [get $static address];
    :if ($static_name=$name && $static_address!=$address) do={
        remove $static;
    }
}

попробуй вот так. если нет - вместо remove $static; напиши что-то в духе :log info $static_name . $name . $static_address . $address и отлавливай в логах, почему не работает.

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

l0stparadise

попробуй вот так. если нет - вместо remove $static; напиши что-то в духе :log info $static_name . $name . $static_address . $address и отлавливай в логах, почему не работает.

Попробую, но там немного другая проблема. Если использовать = и != в одном :if, то скрипт вообще перестает выполняться. Полагаю, он думает, что в нем синтаксическая ошибка или что-то вроде того.

ravdinve
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.