Работа с глобальными переменными (для IPsec-соединений)

Обсуждение ПО и его настройки
vomus
Сообщения: 48
Зарегистрирован: 28 окт 2013, 22:00

Добрый день,
Решаю задачу связки двух сайтов (на обоих концах "Микротики") по IPsec поверх Интернета. Публичные адреса на WAN'ах "Микротиков" могут меняться и, соответственно необходимо менять IP-адреса в /ip ipsec peer и /ip ipsec policy.

Для этого на два WAN'а прикрутил DDNS и теперь необходимо периодически проверять, не поменялся ли IP на этих DDNS'ах. Для этого пытаюсь сохранить старый IP в глобальной переменной, но ее значение почему-то не доступно изнутри скрипта. Делаю:

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

1. из командной строки
  > :global b;
  > :set b "456"
  > /system/script/environment/print
  # NAME               VALUE                                                                                                                             
  0 b                  456           

2. Затем создаю простой скрипт:

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

:log info "Variable $b"
:set b "test1"

и запускаю его. Ожидается, что первый запуск покажет в логе "Variable 456", а второй "Variable test1". Но в логе ничего не видно. Где ошибка?


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

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

:global b
:log info "Variable $b"
:set b "test1"


Вот так надо


Есть интересная задача и бюджет? http://mikrotik.site
vomus
Сообщения: 48
Зарегистрирован: 28 окт 2013, 22:00

vqd писал(а):

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

:global b
:log info "Variable $b"
:set b "test1"


Вот так надо


Таким образом он ведь не сохраняет значение b между последующими запусками скрипта. Тогда должно быть первый раз просто "Variable", а второй "Variable test1". Но два последующих запуска скрипта дают "Variable". Я так понимаю, что объявление b как global внутри скрипта просто инициализирует ее со значением null. Как же тогда сохранять ее значение?


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

нет, он ее просто инициализирует.
Можете посмотреть в переменных. После завершения значения там остаются.
А вот local каждый раз пересоздаются


Есть интересная задача и бюджет? http://mikrotik.site
vomus
Сообщения: 48
Зарегистрирован: 28 окт 2013, 22:00

vqd писал(а):нет, он ее просто инициализирует.
Можете посмотреть в переменных. После завершения значения там остаются.
А вот local каждый раз пересоздаются


Почему тогда:

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

:global b;
:log info "Variable $b";
:set b "test1";

При запуске оба раза показывает пустоту?

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

11:44:51 system,info changed script settings by vomus 
11:45:01 script,info Variable 
11:45:13 script,info Variable 
11:45:15 system,info address list entry removed by vomus


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

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

:global b;
:log info "Variable " . $b;
:set b "test1";


Есть интересная задача и бюджет? http://mikrotik.site
vomus
Сообщения: 48
Зарегистрирован: 28 окт 2013, 22:00

vqd писал(а):

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

:global b;
:log info "Variable " . $b;
:set b "test1";


Сделал cut-paste. Счетчик запусков скрипта увеличивается, время тоже меняется, в логе нет ничего. Поставил все в кавычки - появилось "Variable" без значений. И почему-то в /system/script/environment нет переменной b.


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

это проверил. точно работает

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

:global b
:log info ("Variable " . $b)
:set b test1


Есть интересная задача и бюджет? http://mikrotik.site
vomus
Сообщения: 48
Зарегистрирован: 28 окт 2013, 22:00

vqd писал(а):это проверил. точно работает

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

:global b
:log info ("Variable " . $b)
:set b test1


Вот прикол... Если выполнять скрипт из командной стоки - работает, если в веб-интерфейсе нажимать RunScript - не работает. Это так и должно быть?


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

винбоксом работайте. Там все хорошо


Есть интересная задача и бюджет? http://mikrotik.site
Ответить