2014-10-17 15 views
6

Ho bisogno di emettere comandi di shell Karaf in modo non interattivo, preferibilmente da uno script. Più in particolare, devo dire a Karaf di feature:install un insieme di funzionalità in modo automatico.Script Comandi shell 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 

È possibile? C'è un modo diverso di risolvere questo problema (installazione automatica di un set di funzionalità di Karaf) che mi manca?

risposta

-1

Quindi la pratica generale è installare la funzione, quindi eseguire il ciclo su un pacchetto: elenco | grep bundleName per vedere se i bundle necessari sono installati. Quindi continui con il tuo caso di test.

+0

questo potrebbe essere in genere informazioni utili quando si ha a che fare con karaf, ma non è una risposta alla domanda (come inviare comandi in modo non interattivo a karaf) – hoijui

3

Con bin/karaf si avvia Karaf con un prompt di login, se si desidera avviare Karaf in modo da poter impartire i comandi prima è necessario avviare Karaf in modalità server. Per questo usa lo script bin/start shell. Ora puoi usare i comandi bin/client o bin/shell per comunicare con Karaf in modalità headless.

Ad esempio:

./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 

Questo dovrebbe funzionare per tutte le versioni di Karaf già (forse non la linea 2.2.x ;-))
Se la versione che si sta utilizzando è un 3.0.x o più in alto potrebbe essere necessario aggiungere un utente al comando.

./bin/client -u karaf list 
+0

Sto vedendo un errore 'Impossibile ottenere la sessione', ma quello è probabilmente un problema diverso. Grazie per le informazioni! – dfarrell07

+0

sembra che tu abbia bisogno di un utente con il client. In tal caso, prova con -u 'utente'. Non so quale ODL utente stia usando, ma può essere facilmente trovato nel file users.properties nella cartella etc. –

+0

'karaf = karaf, _g_: admingroup' sembra essere la linea pertinente. Ancora vedendo 'Impossibile ottenere la sessione. Usando' ./bin/client -u karaf list'. – dfarrell07