Usando string com espaço em branco na função subprocess.call em python

0

Estou tentando usar o comando ssh na função subprocess.call de Python 2.6.8 no ambiente Unix para chamar um script remoto e preciso fornecer um parâmetro de string (com espaços em branco) ao script remoto. No entanto, o parâmetro string não está sendo interpretado corretamente quando eu executo o script python.

Aqui está o meu script python: -

 #!/usr/bin/python

 from subprocess import call

 ret=call(['ssh','user@host','\"/remote/path/to/script/test.sh','\'Hi','There\'\"'])

print ret

ret2=call(['ssh','user@host','/remote/path/to/script/test.sh','Hello'])

print ret2

Estou recebendo a seguinte saída com erro e returncode 127 para o comando ssh com "string de espaço em branco", e o segundo comando ssh está funcionando bem com returncode 0 : -

bash: /remote/path/to/script/test.sh 'Hi There': No such file or directory

127

Hello

0

O mesmo comando shell é executado com sucesso quando eu o executo no terminal de linha de comando do shell: -

Command:

ssh user@host "/remote/path/to/script/test.sh 'Hi There'";echo $?

Output:

Hi There

0

Aqui está o conteúdo do script remoto /remote/path/to/script/test.sh (se ajudar): -

#!/usr/bin/ksh

echo $1;

Eu tentei pesquisar no Google e pesquisar na documentação, mas não consegui encontrar uma solução. Eu tentei combinações diferentes para escapar caracteres especiais no comando ssh, mas um erro de análise diferente ocorre cada vez.

Desculpe se essa pergunta foi feita antes, encontrei perguntas semelhantes, mas nada que pudesse me ajudar.

Qualquer dica é apreciada.

Obrigado!

    
por Arjit Dixit 26.04.2018 / 09:49

1 resposta

1

Você só precisa citar a string que está substituindo a versão de trabalho por Hello , ou seja, '"Hi There"' :

ret = call(['ssh','user@host','/remote/path/to/script/test.sh','"Hi There"'])
    
por 26.04.2018 / 10:58