问题
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.
回答1:
To make Aviv's solution work, simply use a pipe, e.g. "bundle:list | tac -f /tmp/yourfile"
回答2:
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
回答3:
For command line, I use "tac" and redirect to a file with -f , in Karaf 3.0.3, try it or learn what it does with --help
来源:https://stackoverflow.com/questions/22438032/cant-capture-apache-karaf-client-output