Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't capture Apache Karaf client output

I started Apache Karaf 3.0.0 in server mode using $KARAF_HOME/bin/start in CentOS 6.5. Then I wanted to run several commands using $KARAF_HOME/bin/client and also capture the output of these commands, so as to make sure the commands ran successfully. The output did get spit out on my console but I was never able to redirect it into a file. Seems like Karaf doesn't write anything to the output stream or error stream. I tried the following:

[apache-karaf-3.0.0]$ ./bin/start clean
[apache-karaf-3.0.0]$ ./bin/client "bundle:list"
Logging in as karaf
282 [pool-2-thread-3] WARN org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - Server at /0.0.0.0:8101 presented unverified key:
START LEVEL 100 , List Threshold: 50
 ID | State  | Lvl | Version                 | Name
------------------------------------------------------------------------------------
 91 | Active |  80 | 1.8.0                   | Commons Codec
 92 | Active |  80 | 2.6                     | Commons Lang
 93 | Active |  80 | 15.0.0                  | Guava: Google Core Libraries for Java

[apache-karaf-3.0.0]$ ./bin/client "bundle:list" >& bundleList
[apache-karaf-3.0.0]$ cat bundleList
null

Nothing got written to the file bundleList. Piping the output doesn't seem to help either.

like image 293
The Governor Avatar asked Mar 16 '14 14:03

The Governor


People also ask

Is Karaf a OSGi?

Apache Karaf is powered by OSGi (but you don't need to know what OSGi is to use Karaf). Apache Karaf uses either the Apache Felix or Eclipse Equinox OSGi frameworks, providing additional features on top of the framework.

How do I exit Karaf shell?

If you're running from the main console, exiting the shell using logout or Ctrl+D will also terminate the Karaf instance.

What is Karaf console?

The Karaf web console provides a graphical overview of the runtime. You can use it to: install and uninstall features. start, stop, install bundles. create child instances.


2 Answers

To make Aviv's solution work, simply use a pipe, e.g. "bundle:list | tac -f /tmp/yourfile"

like image 84
Frizz Avatar answered Sep 18 '22 13:09

Frizz


I'm able to capture client output in Karaf version 3.0.2 .

user@hostname:~$ client bundle:list > bundleinfo.txt

This results in following debug info on the console:

2053 [sshd-SshClient[36c8e545]-nio2-thread-2] WARN org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - Server at [/0.0.0.0:8101, DSA, xx:xx:xx:xx:xx:xx:xx:c 2:3a:5a:9b:87:ed:e0:b2:6a] presented unverified {} key: {}

..and of course the bundleinfo.txt file with content as expected:

user@hostname:~$ head -5 bundleinfo.txt
START LEVEL 100 , List Threshold: 50
 ID | State    | Lvl | Version                 | Name
---------------------------------------------------------------------------------------------
38 | Active   |  80 | 3.2.5.RELEASE           | Spring Security Core
39 | Active   |  80 | 1.0.0.1                 | Apache ServiceMix :: Bundles :: javax.inject
like image 39
RRM Avatar answered Sep 20 '22 13:09

RRM