Не корректно срабатывает условие != для пустого адреса

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Ответить
mvp
Сообщения: 10
Зарегистрирован: 15 фев 2013, 06:05

Отлаживаю скрипты и столкнулся со следующим:
:global MainIfAddress ""
:if ($MainIfAddress = "") do={
:log info "null"
}
:set MainIfAddress [ /ip dhcp-client get [ /ip dhcp-client find interface="wan1" ] address ]
:if ($MainIfAddress != "") do={
:log info "not null"
}
Первое условие работает на ура, а вот второе...
Есть адрес, то всё красиво отрабатывает, но вот когда DHCP лежит, т.е. адрес пустой, то условие != всё равно выполняется, визуально делаю :log info "not null >$$MainIfAddress<", выводит ><.

Никто не сталкивался с таким?


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Не очень понятная конструкция, признаться... Там же не пустое место выходит в переменной, просто значение не имеет обозначения. Я бы прописал подобный финт как-то так:

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

{:global MainIfAddress ;
:set MainIfAddress [ /ip dhcp-client get [ /ip dhcp-client find interface="ether2" ] address ];
:local zet [:pick $MainIfAddress 0 1];
:if ($zet != nil) do={
:log info "not null"
} else={:log info "null"}
}

Не так, чтобы уж очень красиво, костыль тот еще, но работает вроде бы...


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
mvp
Сообщения: 10
Зарегистрирован: 15 фев 2013, 06:05

Ок, спасибо, проверю.

Ошибка конечно не критическая, но просто у меня скрипт в одном месте из-за этого адрес стал обновлять на ddns...


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

статус надо проверять, а не наличие ИП. По идее разницы нет но так как то более правильно


Есть интересная задача и бюджет? http://mikrotik.site
Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

vqd писал(а):статус надо проверять, а не наличие ИП. По идее разницы нет но так как то более правильно

Ну я же говорю, что у меня костыль получился. Но я исходил из условий стартового топика...


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
mvp
Сообщения: 10
Зарегистрирован: 15 фев 2013, 06:05

Чувствую я что до финальных скриптов мне еще ой как далеко... :-):


Ответить