Нужна помьщь, скрипт отслеживает регистрацию пользователя

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
VerMorr
Сообщения: 1
Зарегистрирован: 03 апр 2020, 09:46

03 апр 2020, 10:31

Доброе время суток!
Мне необходимо перезаписывать последнее значение ChekNow в LastValueChe, для того чтобы при следующем запуске скрипта отследить изменилось или нет значение. В зависимости от этого определяется направление пользователя пришёл или ушёл, отправляется сообщение на web сервис. При первом запуске в переменную LastValueChek записывается значение, при последующих запусках значение не перезаписывается, хранит первоначальное значение. Возможно подскажите, почему может не перезаписываться значение в переменную? Владелец скрипта Administrator, Policy - всё кроме dude.

:global mac "XX:XX:XX:XX:XX:XX"
:global LastValueChek
:global ChekNow
if ([/caps-man registration-table find mac-address=$mac] != "") do={set ChekNow true} else={set ChekNow false}

if (($LastValueChek = false) and ($ChekNow = true)) do={
/tool fetch url="<URL url="http://192.168.5.241:55500/">http://192 ... 5500/</URL>" http-data="I_came_home"
}

if (($LastValueChek = true) and ($ChekNow = false)) do={
/tool fetch url="<URL url="http://192.168.5.241:55500/">http://192 ... 5500/</URL>" http-data="I_left_home"
}

:set LastValueChek $ChekNow;


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

03 апр 2020, 20:32

Не знаю. У меня вот эта часть вашего скрипта

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

:global mac "XX:XX:XX:XX:XX:XX"
:global LastValueChek
:global ChekNow
if ([/caps-man registration-table find mac-address=$mac] != "") do={set ChekNow true} else={set ChekNow false}
:set LastValueChek $ChekNow;
:log info $LastValueChek;
исправно выдаёт true при подключенном устройстве и false при отключённом. Делайте дебагинг ваших условий хотя бы простейшим логированием каждого шага, авось найдёте затык. Любое из ваших if имеет по два условия, то есть есть лишь один из четырёх вариантов (true/true; true/false; false/true; false/false) вам подходит и приводит к выполнению команды в do Возможно что-то идёт не так в этот момент. Может свести количество условий к минимуму, там будет легче отследить, что не работает?

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

:if ($LastValueChek = false) do={
   :if ($ChekNow = true) do={
   /tool fetch url="<URL url="http://192.168.5.241:55500/">http://192 ... 5500/</URL>" http-data="I_came_home"
   }
} elce={
   :if ($ChekNow = false) do={
   /tool fetch url="<URL url="http://192.168.5.241:55500/">http://192 ... 5500/</URL>" http-data="I_left_home"
   }
}
Единственное, в этом варианте нужно изначально задать переменной $LastValueChek значение false , чтобы даже при первом старте проверялся учтённый вариант. Это не очень корректно. Или ставить дополнительное условие на случай рестарта роутера, типа там весь блок заключить в

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

 :if ($LastValueChek != "") do={ 
 дальше предыдущий блок
 } else={
:if ($ChekNow = true) do={ 
/tool fetch url="<URL url="http://192.168.5.241:55500/">http://192 ... 5500/</URL>" http-data="Router_restart_I_home"
} else={
/tool fetch url="<URL url="http://192.168.5.241:55500/">http://192 ... 5500/</URL>" http-data="Router_restart_Im_not_at_home"
}
}
Что-то я разболтался :smu:sche_nie: Простите. Мне сложновато воспроизвести ваши условия на тестовой железке, но примерный взгляд на решение проблемы я описал...


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