脚本Karaf shell命令?

dfa*_*l07 7 shell scripting apache-karaf karaf

我需要以非交互方式发出Karaf shell命令,最好是从脚本中发出.更具体地说,我需要以feature:install自动方式告诉Karaf 一系列功能.

# Attempt to install a feature in a way I could script
bash> bin/karaf feature:install myFeature
# Drops me into Karaf shell
karaf> feature:uninstall myFeature
Error executing command: Feature named 'myFeature' is not installed
# Feature wasn't installed
Run Code Online (Sandbox Code Playgroud)

这可能吗?是否有一种不同的解决方法(自动安装一套Karaf功能)我不知道?

Ach*_*eck 5

使用 bin/karaf,您可以通过登录提示启动 Karaf,如果您想启动 Karaf,以便可以发出命令,您首先需要在服务器模式下启动 Karaf。为此,请使用 bin/start shell 脚本。现在您可以使用 bin/client 或 bin/shell 命令以无头模式与 Karaf 进行通信。

例如:

./bin/client list
START LEVEL 100 , List Threshold: 50
ID | State  | Lvl | Version | Name
----------------------------------------------------------------------------------
72 | Active |  80 | 0       | mvn_org.ops4j.pax.web.samples_war_4.1.0-SNAPSHOT_war
Run Code Online (Sandbox Code Playgroud)

这应该适用于 Karaf 的所有版本(可能不是 2.2.x 行;-))
如果您使用的版本是 3.0.x 或更高版本,您可能需要向命令添加用户。

./bin/client -u karaf list
Run Code Online (Sandbox Code Playgroud)


dav*_*ola 5

要以非交互方式发出 Karaf shell 命令,最好从脚本中发出,您还可以使用Karaf 客户端(向下滚动到“Apache Karaf 客户端”)。要安装功能,我使用如下命令

/opt/karaf/bin/client -r 7 "feature:install http; feature:install webconsole"
Run Code Online (Sandbox Code Playgroud)

-r如果服务器尚未启动,该开关允许重试连接(我在 Docker 脚本中使用它)。


小智 -1

所以一般的做法是安装该功能,然后在bundle上循环:list | grep bundleName 查看您需要的捆绑包是否已安装。然后你继续你的测试用例。