Имеется скрипт выуживания событий из файла log:
:global CodeCount [:len [/log/find where message~"CodeCount"]];
:if ($State < $CodeCount) do={:put "lalalla"}; :global State $CodeCount
Если вводить этот код в терминале, то он работает как надо;
Но если заворачивать это в скрипт, то "lalalla" выдаётся всегда, вне зависимости от результата сравнения переменных $State и $CodeCount, в чём может быть проблема?
Код работает в терминале, но не работает как скрипт
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
С таким синтаксисом, видимо на РОС 7 работаете. Мне более привычно старое:
Скорее всего сравнение :if ($State < $CodeCount) некорректно по сути, так как в $CodeCount Вы должны получить внутренние идентификаторы строк лога, где скрипт найдет искомый текст.
Вероятно нужно как то так:
:global CodeCount [/log/find where message~"lte"];
:if ([:len $State] < [:len $CodeCount]) do={:log info "lalalla"};
:global State $CodeCount
Код: Выделить всё
:global CodeCount [:len [/log find where message~"CodeCount"]];
:if ($State < $CodeCount) do={:put "lalalla"}; :global State $CodeCount
Вероятно нужно как то так:
:global CodeCount [/log/find where message~"lte"];
:if ([:len $State] < [:len $CodeCount]) do={:log info "lalalla"};
:global State $CodeCount
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
-
- Сообщения: 164
- Зарегистрирован: 23 июл 2013, 18:47
От куда скрипт должен знать, что такое переменная $State? Особенно в первый запуск скрипта.
-
- Сообщения: 5
- Зарегистрирован: 31 мар 2020, 19:40
Попробовал Ваш код, та же проблема, ничего не поменялось, но спасибоSertik писал(а): ↑21 янв 2022, 21:39 С таким синтаксисом, видимо на РОС 7 работаете. Мне более привычно старое:Скорее всего сравнение :if ($State < $CodeCount) некорректно по сути, так как в $CodeCount Вы должны получить внутренние идентификаторы строк лога, где скрипт найдет искомый текст.Код: Выделить всё
:global CodeCount [:len [/log find where message~"CodeCount"]]; :if ($State < $CodeCount) do={:put "lalalla"}; :global State $CodeCount
Вероятно нужно как то так:
:global CodeCount [/log/find where message~"lte"];
:if ([:len $State] < [:len $CodeCount]) do={:log info "lalalla"};
:global State $CodeCount
Да, версия RouterOS 7.1.1
Последний раз редактировалось LuckyMC 22 янв 2022, 10:50, всего редактировалось 1 раз.
-
- Сообщения: 5
- Зарегистрирован: 31 мар 2020, 19:40
Пока я её глобально задаю руками в терминале с каким-нибудь значение при загрузке роутера, в будущем оптимизирую это
Но Вы правы, в рамках скрипта это не работает, разобрался, можно закрыть тему, спасибо!
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
Конечно и с этим абсолютно согласен.От куда скрипт должен знать, что такое переменная $State? Особенно в первый запуск скрипта.
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947