2015-09-28 1 views
0

У меня есть экземпляр ServiceMix 5.1.4 (localhost), и я хочу, чтобы сценарий изменился с предоставленным клиентом (smx_home/bin/client).Изменение конфигурации ServiceMix для пакета в режиме сценариев с использованием `client` binary

Если я проверить вручную мои команды в SMX консоли (без использования client)

config:edit org.myspace.test.mybundle 
config:propset propertyOne false 
config:propset propertyTwo true 
config:update 

... он прекрасно работает.

Теперь я хочу, чтобы выполнить эти команды из баш, то я написал простой Баш как это:

#!/bin/bash 

smxcli='/opt/mysmxdir/bin/client' 

$smxcli -h localhost -a 8101 -u smx -p smx config:edit org.myspace.test.mybundle 
$smxcli -h localhost -a 8101 -u smx -p smx config:propset propertyOne false 
$smxcli -h localhost -a 8101 -u smx -p smx config:propset propertyTwo true 
$smxcli -h localhost -a 8101 -u smx -p smx config:update 

или если бы я попытался с самого клиента в командной строке, он не будет работать на второй линии так как он не хочет отслеживать первую команду edit.

No configuration is being edited--run the edit command first 

Я попытался представить команды как список:

./client -h localhost -a 8101 -u smx -p smx "config:edit org.myspace.test.mybundle" "config:propset propertyOne true" "config:propset propertyTwo false" "config:update" 

и с опцией -b (пакетное)

./client -h localhost -a 8101 -u smx -p smx -b "config:edit org.myspace.test.mybundle" "config:propset propertyOne true" "config:propset propertyTwo false" "config:update" 

, но он не работает.

Я знаю, что могу использовать опцию -f (записать все команды smx в один файл и выполнить их с помощью client -f myfile.cmd), но мне интересно, возможно ли это из одного сценария bash без дополнительного файла.

+1

AFAIK это была известная проблема в Karaf которая фиксируется ... Вы должны будете ждать, пока выпущена servicemix на основе Karaf 3.0.5. –

+0

@AchimNierbeck, если вы можете поместить ссылку на Jira (если есть), было бы неплохо. Я также проверил документацию servicemix/karaf, но не нашел хорошего примера, который показывает, как использовать параметр -b для клиента. –

+0

@AchimNierbeck На самом деле я нашел решение своей проблемы, используя те же обозначения, что и в 'bash'. Кажется, в моей старой версии окончательно не было проблемы. –

ответ

0

На самом деле решение было очень простым: как в unix/linux вы можете отделить команды точкой с запятой ; в той же командной строке.

Пример:

./client -h localhost -a 8101 -u smx -p smx "config:edit org.myspace.test.mybundle; config:propset propertyOne true; config:propset propertyTwo false; config:update" 

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

В этом случае решение конкатенировать все изменения только с одной командой, как это:

./client -h localhost -a 8101 -u smx -p smx "config:edit org.myspace.test.bundle-1; config:propset propertyOne true; config:propset propertyTwo false; config:update; config:edit org.myspace.test.bundle-2; config:propset propertyX true; config:propset propertyY false; config:update" 
Смежные вопросы