Страница 2 из 3

Re: Пара полезный приемов при написании скрипта

Добавлено: 21 авг 2014, 19:32
vqd
эм, ну логично.
Полагаю вы оба примера запускали из консоли...

Re: Пара полезный приемов при написании скрипта

Добавлено: 21 авг 2014, 22:43
23q
та не, я их не запускал вообще :-)
я запускал:

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

:global aaa;
if condition=([/typeof $aaa] = "nothing") do={log info pusto} else={log info nepusto}

работает...
добавление "condition=" помогло.

Re: Пара полезный приемов при написании скрипта

Добавлено: 13 ноя 2014, 23:36
leon_serv
Обнаружил недоработку, не знаю куда писать, может эту тему переименовать и пополнять?
Если надо в скрипте указать в /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, и почему не обязательно в конце оператора ставить ";"

Re: Пара полезный приемов при написании скрипта

Добавлено: 14 ноя 2014, 07:48
vqd
:set tmpgw ($FirstIfInetGW .",". $ThirdIfInetGW );


что есть логично

Re: Пара полезный приемов при написании скрипта

Добавлено: 19 ноя 2014, 22:27
leon_serv
Вопрос - а куда выводит :put "Hello!";
RB951Ui-2HnD с прошивкой 6.20
В терминале выводит в терминал, в скрипте :put выводит в "никуда", приходится использовать /log

Re: Пара полезный приемов при написании скрипта

Добавлено: 28 ноя 2014, 20:27
vqd
:-) кто в теме тот поймет глубину замысла

{
:local tmp "str"
[:parse ":global $tmp"]
}

Re: Пара полезный приемов при написании скрипта

Добавлено: 19 апр 2015, 16:54
23q
Вообще язык скриптов простой и логичный, но запутанный, запутался где ставят [] а где (), и почему не всегда перед if ставят :if, и почему не обязательно в конце оператора ставить ";"

":" — для глобальных комманд, с символа "/" начинается командная строка, которая будет выполняться относительно корня конфигурации, префикс может отсутствовать, тогда командная строка выполняется относительно текущего раздела конфигурации

Re: Пара полезный приемов при написании скрипта

Добавлено: 23 апр 2015, 20:56
23q
а как мне глобально переменной присвоить значение:

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

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"
не работает потому-как символы " мешают!

Re: Пара полезный приемов при написании скрипта

Добавлено: 23 апр 2015, 21:27
podarok66

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

: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\""

, если переносы каретки актуальны.

Re: Пара полезный приемов при написании скрипта

Добавлено: 24 апр 2015, 17:11
23q
спасибо!
Реально

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

\"   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.