Как правильно есть или нету в Mikrotik?

Здравствуйте. Как по завершению скрипта узнать есть такой ип, или нету его.

дело в том, что когда в арп таблице есть ип адрес 192.168.5.2, то выполняя даный скрипт в логах пишется "est takoy ip", а вот когда его нету, почему то не срабатывает else. почему? Может проблема в не правильном сравнении
:if ($i != "") ?




:foreach i in=[/ip arp find address="192.168.5.2"] 
do={:if ($i != "") 
do={:log info message="est takoy ip"} 
else={:log info message="net takoy ip"}}


надо чтоб когда его не было показал лог "net takoy ip", а кога было то "est takoy ip"

и дело не в конкретном реализации которое тут написано. Этой простой формулировкой я хочу понять как узнать, о том, что есть в переменной ($i) или нету с помощю сравнении :if ($i != "").
  • Вопрос задан
  • 173 просмотра
Решения вопроса 2
icCE
@icCE
youtube.com/channel/UC66N_jRyZiotlmV95QPBZfA
Ну достаточно посмотреть скриптинг на странице mikrotik, его хватает вполне.

Вот пример if else

{
:local myBool true;
:if ($myBool = false) do={ :put "value is false" } else={ :put "value is true" }
}

https://wiki.mikrotik.com/wiki/Manual%3AScripting
Если значение нет , то выводим что значение ложное иначе выводим, значение истина.
Ответ написан
fellliche
@fellliche Автор вопроса
Вот так получилось точно сто процентно сравнить есть или нету.

:if ([:len [/ip arp find address="192.168.5.1"]] > 0) do={:put "est takoy ip";} else={:put "net takoy ip";}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
"" != " " != NULL

Вывести в лог содержимое переменной можете ??
Ответ написан
hint000
@hint000
у админа три руки
У вас else (точнее весь условный оператор) внутри цикла, а этот цикл не выполняется ни разу, когда нет искомого ip-адреса.
Поэтому логично, что ветка else никогда не будет срабатывать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы