You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Gerald Kallas <ca...@mailbox.org> on 2020/05/23 05:29:50 UTC
Camel-exec issue (script works but returns 1 inside a route)
Hi all,
I've the following script (inside the container)
-rwxr-xr-x 1 casisp casisp 103 May 22 22:58 user-add
/opt/apache-karaf/bin/client "jaas:realm-manage --index 1; jaas:user-add user1 password1; jaas:update"
When I'm calling it from the command line directly it works.
Inside a route (see below) it returns an exit code 1. Any thoughts about this?
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0
https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route>
<from uri="timer:exec?repeatCount=1" />
<setHeader name="CamelExecCommandExecutable">
<constant>/opt/apache-karaf/bin/user-add</constant>
</setHeader>
<to uri="exec://dummy-target" />
<log message="headers: ${in.headers}" />
</route>
</camelContext>
</blueprint>
2020-05-23T05:28:44,039 | INFO | Blueprint Event Dispatcher: 1 | AbstractCamelContext | 94 - org.apache.camel.camel-base - 3.3.0 | Route: route37 started and consuming from: timer://exec
2020-05-23T05:28:44,067 | INFO | Blueprint Event Dispatcher: 1 | AbstractCamelContext | 94 - org.apache.camel.camel-base - 3.3.0 | Total 1 routes, of which 1 are started
2020-05-23T05:28:44,068 | INFO | Blueprint Event Dispatcher: 1 | AbstractCamelContext | 94 - org.apache.camel.camel-base - 3.3.0 | Apache Camel 3.3.0 (CamelContext: camel-35) started in 0.223 seconds
2020-05-23T05:28:44,088 | INFO | fileinstall-/opt/apache-karaf-4.2.8/deploy | fileinstall | 10 - org.apache.felix.fileinstall - 3.6.4 | Started bundle: blueprint:file:/opt/apache-karaf-4.2.8/deploy/exec.xml
2020-05-23T05:28:50,553 | INFO | sshd-SshServer[242a1ef6]-nio2-thread-1 | ServerUserAuthService | 38 - org.apache.sshd.core - 1.7.0 | Session admin@/127.0.0.1:50158 authenticated
2020-05-23T05:28:51,697 | ERROR | Camel (camel-35) thread #67 - timer://exec | ExecProducer | 109 - org.apache.camel.camel-exec - 3.3.0 | The command ExecCommand [args=[], executable=/opt/apache-karaf/bin/user-add, timeout=9223372036854775807, outFile=null, workingDir=null, commandLogLevel=DEBUG, useStderrOnEmptyStdout=false] returned exit value 1
2020-05-23T05:28:51,697 | INFO | Camel (camel-35) thread #67 - timer://exec | route37 | 102 - org.apache.camel.camel-core-engine - 3.3.0 | headers: {CamelExecExitValue=1, CamelExecStderr=java.io.ByteArrayInputStream@6d4d91bc, firedTime=Sat May 23 05:28:45 UTC 2020}
Best
- Gerald
Re: Camel-exec issue (script works but returns 1 inside a route)
Posted by Alex Soto <al...@envieta.com>.
Also, take a look at org.apache.karaf.itests.KarafTestSupport.executeCommand from
<groupId>org.apache.karaf.itests</groupId>
<artifactId>common</artifactId>
Best regards,
Alex soto
> On May 28, 2020, at 9:50 AM, Alex Soto <al...@envieta.com> wrote:
>
> Hi Gerald,
>
> There is no "/opt/apache-karaf/bin/user-add” in the default Karaf distribution, AFAIK.
>
> I think you may want to use the “/opt/apache-karaf/bin/client” script instead, or SSH, or perhaps your best choice is to directly reference the implementation Service as a bean. I don’t know which service deals with the JAAS subsystem, but I suspect there is one, in which case, you can reference the service, as in:
>
> <reference id=“myService” interface=“org.apache.karaf.SomeServiceInterface”/>
>
>
> Then call “myService” as a bean:
>
> <bean ref=“myService" method=“someMethod”/>
>
>
> And avoid interacting with the shell. I hope this helps.
>
> Best regards,
> Alex soto
>
>
>
>
>> On May 23, 2020, at 1:29 AM, Gerald Kallas <catshout@mailbox.org <ma...@mailbox.org>> wrote:
>>
>> /opt/apache-karaf/bin/user-add
>
Re: Camel-exec issue (script works but returns 1 inside a route)
Posted by Alex Soto <al...@envieta.com>.
Hi Gerald,
There is no "/opt/apache-karaf/bin/user-add” in the default Karaf distribution, AFAIK.
I think you may want to use the “/opt/apache-karaf/bin/client” script instead, or SSH, or perhaps your best choice is to directly reference the implementation Service as a bean. I don’t know which service deals with the JAAS subsystem, but I suspect there is one, in which case, you can reference the service, as in:
<reference id=“myService” interface=“org.apache.karaf.SomeServiceInterface”/>
Then call “myService” as a bean:
<bean ref=“myService" method=“someMethod”/>
And avoid interacting with the shell. I hope this helps.
Best regards,
Alex soto
> On May 23, 2020, at 1:29 AM, Gerald Kallas <ca...@mailbox.org> wrote:
>
> /opt/apache-karaf/bin/user-add