Ssh

在 python 的 subprocess.call 函式中使用帶空格的字元串

  • January 26, 2019

我正在嘗試在 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"'])

引用自:https://unix.stackexchange.com/questions/440147