эм, ну логично.
Полагаю вы оба примера запускали из консоли...
Пара полезный приемов при написании скрипта
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
-
- Модератор
- Сообщения: 3605
- Зарегистрирован: 26 сен 2013, 14:20
- Откуда: НСК
- Контактная информация:
-
- Сообщения: 57
- Зарегистрирован: 16 май 2013, 11:21
та не, я их не запускал вообще
я запускал:
работает...
добавление "condition=" помогло.
я запускал:
Код: Выделить всё
:global aaa;
if condition=([/typeof $aaa] = "nothing") do={log info pusto} else={log info nepusto}
работает...
добавление "condition=" помогло.
-
- Сообщения: 2
- Зарегистрирован: 29 окт 2014, 22:32
Обнаружил недоработку, не знаю куда писать, может эту тему переименовать и пополнять?
Если надо в скрипте указать в /ip route более одного gateway/
У меня будет три канала ISP.
Пишу скрипт проверки доступности, по результатам меняю gateway в /ip route.
Вводим в консоли
/ip route set [find comment="AllWorkRoute"] gateway=192.168.11.1,192.168.30.1;
Все работает (ну понятно коммент должен быть у маршрута), прописывается два gateway
Теперь берем переменные FirstIfInetGW ThirdIfInetGW
[admin@UtitradeU] > :put $FirstIfInetGW
192.168.11.1
[admin@UtitradeU] > :put $ThirdIfInetGW
192.168.30.1
И обнаруживаем что с переменными задать два и более gateway нельзя:
------------------
[admin@UtitradeU] > /ip route set [find comment="AllWorkRoute"] gateway=192.168
.11.1,192.168.30.1;
[admin@UtitradeU] > /ip route set [find comment="AllWorkRoute"] gateway=$FirstI
fInetGW,$ThirdIfInetGW;
expected end of command (line 1 column 67)
------------------
Ругается на "," перед $ThirdIfInetGW
Пришлось городить через конкатенацию:
:local tmpgw;
:set tmpgw ($FirstIfInetGW .",". $ThirdIfInetGW );
/ip route set [find comment="AllWorkRoute"] gateway=$tmpgw;
Так заработало.
Роутер RB951Ui-2HnD ROS 6.20
P.S. Вообще язык скриптов простой и логичный, но запутанный, запутался где ставят [] а где (), и почему не всегда перед if ставят :if, и почему не обязательно в конце оператора ставить ";"
Если надо в скрипте указать в /ip route более одного gateway/
У меня будет три канала ISP.
Пишу скрипт проверки доступности, по результатам меняю gateway в /ip route.
Вводим в консоли
/ip route set [find comment="AllWorkRoute"] gateway=192.168.11.1,192.168.30.1;
Все работает (ну понятно коммент должен быть у маршрута), прописывается два gateway
Теперь берем переменные FirstIfInetGW ThirdIfInetGW
[admin@UtitradeU] > :put $FirstIfInetGW
192.168.11.1
[admin@UtitradeU] > :put $ThirdIfInetGW
192.168.30.1
И обнаруживаем что с переменными задать два и более gateway нельзя:
------------------
[admin@UtitradeU] > /ip route set [find comment="AllWorkRoute"] gateway=192.168
.11.1,192.168.30.1;
[admin@UtitradeU] > /ip route set [find comment="AllWorkRoute"] gateway=$FirstI
fInetGW,$ThirdIfInetGW;
expected end of command (line 1 column 67)
------------------
Ругается на "," перед $ThirdIfInetGW
Пришлось городить через конкатенацию:
:local tmpgw;
:set tmpgw ($FirstIfInetGW .",". $ThirdIfInetGW );
/ip route set [find comment="AllWorkRoute"] gateway=$tmpgw;
Так заработало.
Роутер RB951Ui-2HnD ROS 6.20
P.S. Вообще язык скриптов простой и логичный, но запутанный, запутался где ставят [] а где (), и почему не всегда перед if ставят :if, и почему не обязательно в конце оператора ставить ";"
-
- Модератор
- Сообщения: 3605
- Зарегистрирован: 26 сен 2013, 14:20
- Откуда: НСК
- Контактная информация:
:set tmpgw ($FirstIfInetGW .",". $ThirdIfInetGW );
что есть логично
Есть интересная задача и бюджет? http://mikrotik.site
-
- Сообщения: 2
- Зарегистрирован: 29 окт 2014, 22:32
Вопрос - а куда выводит :put "Hello!";
RB951Ui-2HnD с прошивкой 6.20
В терминале выводит в терминал, в скрипте :put выводит в "никуда", приходится использовать /log
RB951Ui-2HnD с прошивкой 6.20
В терминале выводит в терминал, в скрипте :put выводит в "никуда", приходится использовать /log
-
- Модератор
- Сообщения: 3605
- Зарегистрирован: 26 сен 2013, 14:20
- Откуда: НСК
- Контактная информация:
кто в теме тот поймет глубину замысла
{
:local tmp "str"
[:parse ":global $tmp"]
}
Есть интересная задача и бюджет? http://mikrotik.site
-
- Сообщения: 57
- Зарегистрирован: 16 май 2013, 11:21
Вообще язык скриптов простой и логичный, но запутанный, запутался где ставят [] а где (), и почему не всегда перед if ставят :if, и почему не обязательно в конце оператора ставить ";"
":" — для глобальных комманд, с символа "/" начинается командная строка, которая будет выполняться относительно корня конфигурации, префикс может отсутствовать, тогда командная строка выполняется относительно текущего раздела конфигурации
-
- Сообщения: 57
- Зарегистрирован: 16 май 2013, 11:21
а как мне глобально переменной присвоить значение:
???
я присвоил методом считывания в переменную с файла, а как через терминал?
global 1 WshShell.SendKeys "{ENTER}" WScript.Sleep 500 WshShell.SendKeys "reboot" WshShell.SendKeys "{ENTER}" WScript.Sleep 2000 WshShell.SendKeys "exit"
не работает потому-как символы " мешают!
Код: Выделить всё
WshShell.SendKeys "{ENTER}"
WScript.Sleep 500
WshShell.SendKeys "reboot"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 2000
WshShell.SendKeys "exit"
???
я присвоил методом считывания в переменную с файла, а как через терминал?
global 1 WshShell.SendKeys "{ENTER}" WScript.Sleep 500 WshShell.SendKeys "reboot" WshShell.SendKeys "{ENTER}" WScript.Sleep 2000 WshShell.SendKeys "exit"
не работает потому-как символы " мешают!
- podarok66
- Модератор
- Сообщения: 4362
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Код: Выделить всё
:global 1 "WshShell.SendKeys \"{ENTER}\" WScript.Sleep 500 WshShell.SendKeys \"reboot\" WshShell.SendKeys \"{ENTER}\" WScript.Sleep 2000 WshShell.SendKeys \"exit\""
или
Код: Выделить всё
:global 1 "WshShell.SendKeys \"{ENTER}\" \r\nWScript.Sleep 500 \r\nWshShell.SendKeys \"reboot\" \r\nWshShell.SendKeys \"{ENTER}\" \r\nWScript.Sleep 2000 \r\nWshShell.SendKeys \"exit\""
, если переносы каретки актуальны.
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 57
- Зарегистрирован: 16 май 2013, 11:21
спасибо!
Реально
Реально
Код: Выделить всё
\" Insert double quote
\\ Insert backslash
\n Insert newline
\r Insert carriage return
\t Insert horizontal tab
\$ Output $ character. Otherwise $ is used to link variable.
\? Output ? character. Otherwise ? is used to print "help" in console.
\_ - space
\a - BEL (0x07)
\b - backspace (0x08)
\f - form feed (0xFF)
\v Insert vertical tab
\xx Print character from hex value. Hex number should use capital letters.