Страница 2 из 3
Re: Работа с глобальными переменными (для IPsec-соединений)
Добавлено: 04 апр 2014, 14:32
vomus
vqd писал(а):винбоксом работайте. Там все хорошо
Тот же самый эффект. Запускаешь в косоли - ок. Запускаешь в Winbox'е - нет. Причем, что странно, скрипт, будучи запущен в winbox'е (да и в веб-интерфейсе), отрабатывает так, как будто запущен совершенно отдельный его экземпляр в каком-то собственном окружении: значение глобальной переменной, видимое из /system/script/environment не выводится, а выводится null. Как будто он в этом окружении инициализирует переменную null'ом. Может это баг (у меня 6.11).
Re: Работа с глобальными переменными (для IPsec-соединений)
Добавлено: 04 апр 2014, 14:40
vqd
ну я этот скрипт тестировал тоже на 6.11
Проблем не было, все писалось в переменные.
Вы смотрите значение переменной средствами винбокса.
Re: Работа с глобальными переменными (для IPsec-соединений)
Добавлено: 04 апр 2014, 18:07
vomus
vqd писал(а):ну я этот скрипт тестировал тоже на 6.11
Проблем не было, все писалось в переменные.
Вы смотрите значение переменной средствами винбокса.
Вот странно.

Почему такая разница?
Re: Работа с глобальными переменными (для IPsec-соединений)
Добавлено: 04 апр 2014, 19:05
podarok66
Вот такое работает гарантированно у меня:
Код: Выделить всё
:global b;
:log info "Variable $b";
:set $b "test1";
Re: Работа с глобальными переменными (для IPsec-соединений)
Добавлено: 06 дек 2018, 17:00
ERge
я конечно извиняюсь за "некрофилию", но сейчас декабрь 2018г, прошивка 6.43.7 и такая же ерунда!
если устанавливать переменную в терминале например
то тут все нормально, она есть в переменных окружения, из другого терминала тоже все доступно.
и если запускать скрипт
Из терминала, то он ее видит, все норм.
Но вот если же скрипт запускать по кнопке
Run Script из
Script List или по
шедулеру, то данная переменная
всегда пустая, даже если она устанавливается в скрипте !?
эм...
это каг???
вот действительно буд-то в своем окружении запскается...
vomus писал(а): ↑04 апр 2014, 14:32
отрабатывает так, как будто запущен совершенно отдельный его экземпляр в каком-то собственном окружении: значение глобальной переменной, видимое из /system/script/environment не выводится, а выводится null. Как будто он в этом окружении инициализирует переменную null'ом.
как тогда пользоваться глобальными переменными?
нужно чтобы скрипт запускаемый по шедулеру видел глобальную переменную, как ее передавать?
может в самом скрипте еще что-то надо???
Re: Работа с глобальными переменными (для IPsec-соединений)
Добавлено: 06 дек 2018, 17:16
ERge
если в скрипте сделать следующий вывод
то, не смотря на то что переменная была объявлена в терминале, и даже переопределяется в скрипте, каждый раз при запуске скрипта на это строке он выводит
nothing !?
Re: Работа с глобальными переменными (для IPsec-соединений)
Добавлено: 18 дек 2018, 15:31
Niblerjkee
Такая же ерунда. Запускаю скрипт через Winbox, переменные определяются. Запускаю скрипт netwatch- ем :log info [$var] пустая строка!
Re: Работа с глобальными переменными (для IPsec-соединений)
Добавлено: 18 дек 2018, 15:42
vqd
Скрипт весь покажите ))
Собственно тут логично
:global var1
:log info [:typeof $var1]
Если ранее переменная не была определена то она определяется в этом скрипте и она пустая, о чем микрот в логе и пишет.
Re: Работа с глобальными переменными (для IPsec-соединений)
Добавлено: 18 дек 2018, 17:19
Niblerjkee
Собственно три скрипта.
####Startup#####
:global ISP1down false;
:log info [$ISP1down]
/log warning "Startup, set ISPdown false"
####NetwatchDown#####
:global ISP1down
:log info [$ISP1down]
:local checkip [/ping 7.7.7.7 count=1]
:if (checkip = 0) do={
/ip route set distance=3 [find comment="ISP1"]
:set $ISP1down true
/log warning "NetwatchDown, Switch to ISP2, set ISPdown true"
} else={/log warning "loznaya trevoga"}
:log info [$ISP1down]
#######NetwatchUP#####
:global ISP1down
:log info [$ISP1down]
:if ($ISP1down = true) do={
/ip route set distance=1 [find comment="ISP1"]
:set $ISP1down false;
/log warning "NetwatchUP, Switch back to ISP1, set ISPdown false"
} else={/log warning "NetwatchUP, nothing to do"}
Re: Работа с глобальными переменными (для IPsec-соединений)
Добавлено: 20 дек 2018, 03:50
vqd
фу блин Честно, считаю такое решение по резервированию отвратительным поэтому править не буду.
Приведите скрипт в надлежащий вид ибо ОНО у вас в принципе не рабочее
1. [ bla bla] - это вызов функции
2. в одном месте вы пишите :log в другом /log
3. в одном месте вы данные берете из переменной, в другом из какова то checkip
4. почитайте про set - он тоже неправильно описан