Remote ssh commad com variáveis, aspas e aspas simples [closed]

0

Eu preciso executar um comando em um servidor MongoDB remoto, usando variáveis declaradas no shell script.

Comando:

ssh [email protected] "mongo mydb --host 10.1.1.1 --port 27017 -u user -p password --authenticationDatabase admin --eval 'db.mycollection.update({}, {$push: {'"$ENTITY"': NumberInt('"$CODE"')}})' --quiet"

Note que se eu usar o comando fora do shell script, substituindo as variáveis, um erro de sintaxe bash -c será exibido. Exemplo:

ssh [email protected] "mongo mydb --host 10.1.1.1 --port 27017 -u user -p password --authenticationDatabase admin --eval 'db.mycollection.update({}, {$push: {foo: NumberInt(123)}})' --quiet"

bash: -c: line 0: syntax error near unexpected token '('

Está funcionando agora! Solução:

DBUPDATE="db.mycollection.update({}, {\$push: {${ENTITY}: NumberInt(${CODE})}})"

ssh [email protected] mongo mydb --host 10.1.1.1 --port 27017 -u user -p password --authenticationDatabase admin --eval "'$DBUPDATE'" --quiet
    
por Daniel Pinto 11.10.2017 / 18:12

1 resposta

1

ssh [email protected] 'mongo mydb --host 10.1.1.1 --port 27017 -u user -p password --authenticationDatabase admin --eval "db.mycollection.update({}, {$push: {'"$ENTITY"': NumberInt('"$CODE"')}})" --quiet'

Troquei as aspas duplas por aspas simples no início e no final e coloquei sua entrada --eval entre aspas duplas.

    
por 11.10.2017 / 18:50