Carregar variáveis de ambiente ao usar o sudo

0

Se eu executar o seguinte comando:

sudo -i
mongo -u $MDBUSER -p $MDBPASSWORD

Eu posso conectar com sucesso usando o shell mongodb.

No entanto:

$ sudo 'mongo $MAUTH -u $MUSER -p $MPASS'
sudo: mongo $MAUTH -u $MUSER -p $MPASS: command not found

$ sudo -i mongo $MAUTH -u $MUSER -p $MPASS
Error parsing command line: the required argument for option '--username' is missing

O que estou fazendo de errado aqui?

    
por SpooForBrains 21.11.2016 / 17:13

1 resposta

0

Para usar a sintaxe de aspas simples, você precisa passar a string para o bash shell e expor suas variáveis por meio de env , por exemplo

$ sudo env MDBAUTH="$MDBAUTH" MDBUSER="$MDBUSER" MDBPASSWORD="$MDBPASSWORD" \
    bash -c 'mongo "$MDBAUTH" -u "$MDBUSER" -p "$MDBPASSWORD"'

Aqui estão alguns outros exemplos:

$ sudo -i env FOO=FOO BAR=BAR bash -c 'grep -e FOO -e BAR <(set)'
BAR=BAR
BASH_EXECUTION_STRING='grep -e FOO -e BAR <(set)'
FOO=FOO
SUDO_COMMAND='/bin/sh -c env FOO=FOO BAR=BAR bash -c grep\ -e\ FOO\ -e\ BAR\ <(set)'
$ sudo env FOO=FOO BAR=BAR bash -c 'echo $FOO $BAR'
FOO BAR

Ao usar aspas duplas, você precisa dessas variáveis definidas em seu shell local (no momento da execução do comando), por exemplo:

sudo -i mongo "$MDBAUTH" -u "$MDBUSER" -p "$MDBPASSWORD"

Para ver se as variáveis são definidas e analisadas corretamente, prefixe o comando inteiro com echo . Se as variáveis estiverem vazias, elas precisam ser definidas primeiro.

    
por 06.10.2017 / 17:04

Tags