Страница 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.