2015-01-30 20 views
5

Sto cercando di creare uno script bash che si connette a un database Mongo remoto e inizializza una shell Mongo interattiva, emette un paio di comandi alla shell interattiva di Mongo, e quindi consente alla shell interattiva di continuare a funzionare in modo che possa continuare a immettere comandi in essa.Passa i comandi alla shell Mongo dallo script bash senza arrestare la shell Mongo interattiva

Attualmente, ho capito che posso connettersi a un database Mongo ed emettere un comando per esso all'interno di uno script bash in questo modo:

mongo <ip>:<port>/<database> --eval "db.auth('myuname', 'mypass');" 

Tuttavia, vorrei che il mio script bash per eseguire il comando di cui sopra, e quindi mantenere la shell di Mongo che è stata inizializzata in esecuzione in modo che possa continuare a usarla e immettere comandi da sola. Sembra che dopo aver eseguito il comando precedente, venga creata una shell Mongo e poi interrotta immediatamente dopo l'esecuzione del comando db.auth(), ma vorrei mantenere la shell in esecuzione oltre questo punto.

risposta

4

Utilizzare l'opzione --shell in aggiunta all'opzione --eval. Ciò manterrà la sessione di shell mongo aperto in modalità interattiva dopo che il codice --eval viene eseguito:

mongo --shell --eval "printjson('Hello, World!')" 

si può anche mettere i comandi in ~/.mongorc.js e /etc/mongorc.js che la shell verrà eseguito quando viene avviato dall'utente corrente o ogni volta è iniziato, rispettivamente. Vedi lo files section dei documenti della mongo shell.

+0

Grazie! Questo e 'esattamente quello che stavo cercando. –

Problemi correlati