Переменной не присваивается значение

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

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

Так работает.

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

:put [/ip firewall filter get [find comment="kick-ass"] packets]
112650
А так не работает.

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

:local pa0 [/ip firewall filter get [find comment="kick-ass"] packets]
:put ($pa0-1)
-1
:du_ma_et:


karton
Сообщения: 42
Зарегистрирован: 21 мар 2025, 06:34

Поймал точно такое же поведение когда выполнял :put ($pa0-1) в терминале, если сделать скрипт в System --> Scripts и потом в терминале запускать его через "/system/script/ run script2" то всё нормально


ReAlex
Сообщения: 20
Зарегистрирован: 10 мар 2020, 10:59

Получается, что переменная :local видна в пределах строки. Нажал энтер - все. В Повершеле не так.
Пришлось писать скрипт одной строкой разделяя команды семиколом. Как-то не по-человечески. Мягко говоря.


karton
Сообщения: 42
Зарегистрирован: 21 мар 2025, 06:34

Если скрипт создавать в System Scripts то там можно ставить Enter


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

Если проверять в Terminal, то чтобы две команды отработали цепочкой, их надо в одну локальную область определить (фигурные скобки). Вот прямо на рабочей машинке:

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

[podarok66@RB750Gr3] > {:local a [/ip firewall filter get [find comment="Winbox on WAN"] packets]; :put $a}
1018
[podarok66@RB750Gr3] > {:local a [/ip firewall filter get [find comment="Winbox on WAN"] packets]; :put ($a + 20)}
1038


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

podarok66 писал(а): 20 апр 2025, 19:31 их надо в одну локальную область определить (фигурные скобки)
Так вычитывать скрипт неудобно. А есть способ пользоваться переносом строки, но отправлять на выполнение сразу несколько строк?


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

Вы сейчас серьезно? Это синтаксис данной оси. Если вам неудобно, меняйте ось или смиритесь.


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