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"'])
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!
Tags ssh python remote whitespace string