2014-10-17 214 views
6

我需要非交互式地發出Karaf shell命令,最好是從腳本中發出。更具體地說,我需要以自動的方式告訴Karaf feature:install一組功能。腳本Karaf shell命令?

# 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 

這可能嗎?有沒有解決這個問題的不同方式(自動安裝一套Karaf功能),我錯過了?

回答

-1

所以一般的做法是安裝該功能,然後在一個bundle上循環:list | grep bundleName來查看你需要的bundle是否安裝。然後繼續你的測試用例。

+0

這可能通常是有用的信息,當處理卡拉夫,但它不是一個問題的答案(如何非交互式地向卡拉夫發出命令) – hoijui 2017-12-20 11:24:56

3

使用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 

這應該已經Karaf的所有版本(也許不是2.2.x的行;-))
如果您正在使用的版本是3.0.x和你可能需要增加一個用戶到命令中。

./bin/client -u karaf list 
+0

我看到一個'無法獲得會話錯誤,但這是可能是另一個問題。謝謝(你的)信息! – dfarrell07 2014-10-20 15:07:31

+0

看起來像你需要一個用戶與客戶端。在這種情況下,請嘗試使用-u'user'。不知道ODL正在使用哪個用戶,但可以很容易地在etc文件夾下的users.properties文件中找到。 – 2014-10-20 15:53:45

+0

'karaf = karaf,_g_:admingroup'似乎是相關的行。仍然看到'使用'./bin/client -u karaf list'獲取會話失敗。 – dfarrell07 2014-10-20 19:00:38