我试图在Unix环境下的函数ssh
中使用命令来调用远程脚本,并且我需要向远程脚本提供一个字符串参数(带空格)。但是,当我运行 python 脚本时,字符串参数没有被正确解释。subprocess.call
Python 2.6.8
这是我的 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
我收到以下带有错误的输出,并且returncode 127
对于带有“空白字符串”的 ssh 命令,第二个 ssh 命令运行良好returncode 0
:-
bash: /remote/path/to/script/test.sh 'Hi There': No such file or directory
127
Hello
0
当我在 shell 命令行终端上运行相同的 shell 命令时,它会成功执行:-
Command:
ssh user@host "/remote/path/to/script/test.sh 'Hi There'";echo $?
Output:
Hi There
0
这是远程脚本的内容/remote/path/to/script/test.sh
(如果有帮助):-
#!/usr/bin/ksh
echo $1;
答案1
您只需要引用用 替换工作版本的字符串Hello
,即'"Hi There"'
:
ret = call(['ssh','user@host','/remote/path/to/script/test.sh','"Hi There"'])