Как я могу выполнить некоторые команды в межсистемном кеше из шеллскрипта?

Я хочу выполнить некоторые команды в межсистемном кеше из сценария оболочки. Одно решение, которое я знаю, заключается в создании файла конфигурации, но проблема в том, что я не знаю, как использовать файл конфигурации через сценарий оболочки. Есть ли другое решение для этого...

например, что мне нужно запустить в кеше, это

csession instancename
zn "area"
area>D ^%RI
Device:some/device/path
Next: It should take enter

person Ajit Nair    schedule 28.05.2013    source источник


Ответы (3)


Это можно сделать из оболочки Linux, просто ведите журнал команд, которые вам нужно выполнить, а затем поместите их в сценарий. Вот пример входа в Cache и написания «Hello world» — обратите внимание, что это также предполагает, что вам нужно пройти аутентификацию.

echo -e "username\npassword\nW \"Hello world\"\nH\n" | csession instance

Обратите внимание, что каждая команда, которую вы бы запускали вручную, находится там и разделена символом «\n», это символ, представляющий клавишу «Enter».

person joebeeson    schedule 18.06.2013

Возможен (для некоторых операционных систем) запуск терминала Cache в пакетном режиме. Например:

echo: off
wait for:Username
send: SYS<CR>
wait for:Password
send: XXX<CR>
echo: on

logfile: Somepath\myFile.log

send: ZN "AREA"
wait for:AREA>

send: D ^%RI
wait for:Device:
send: some/device/path
wait for:Next:
send: <CR>

Это описано в документации по кэш-терминалу Intersystems, особенно использование терминала в разделе пакетного режима и раздел скриптов терминала .

person psr    schedule 28.05.2013
comment
Я все еще не понял. Я новичок в шеллскриптинге и кеше - person Ajit Nair; 29.05.2013
comment
Вы читали какую-либо документацию? Что вы пробовали? Чего ты не понимаешь? - person psr; 29.05.2013

Это очень старый вопрос ... когда я столкнулся с тем же, и поэтому, проведя небольшое исследование и разработку, я нашел решение этой проблемы. Что очень круто и просто.

Допустим у меня есть этот файл (можно с любым расширением с каждой командой в отдельной строке)

myScript.scr

     zn "%SYS"
     for e="a","b","c" { w e,! }

Таким образом, передача его в кеш-терминал в случае UNIX использует csession с оператором linux PIPE (|)

кот myScript.scr | csession {instance_name}

Eg.

cat myScript.scr | csession CACHE

выход

     a
     b
     c

Примечание:

• Don't separate a command in multiple lines else `csession` will through <SYNTAX> error. (See how I wrote the *for* loop)
• Extra knowledge - Intersystem Ensemble supports *Cache Terminal Batch Mode* in Windows case... While in linux there is no cterm to take the scripts.. 
• But linux gives you a work around to do this ;).

Надеюсь, это поможет вам, ребята! ура :D

person Community    schedule 30.07.2018