Ssh
在 python 的 subprocess.call 函式中使用帶空格的字元串
我正在嘗試在 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;
您只需要引用替換工作版本的字元串
Hello
,即'"Hi There"'
:ret = call(['ssh','user@host','/remote/path/to/script/test.sh','"Hi There"'])