Python의 subprocess.call 함수에서 공백이 있는 문자열 사용

Python의 subprocess.call 함수에서 공백이 있는 문자열 사용

Unix 환경의 함수에서 명령을 사용하여 ssh원격 스크립트를 호출하려고 하는데 원격 스크립트에 문자열 매개변수(공백 포함)를 제공해야 합니다. 그러나 Python 스크립트를 실행하면 문자열 매개변수가 올바르게 해석되지 않습니다.subprocess.callPython 2.6.8

이것은 내 파이썬 스크립트입니다:-

 #!/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

쉘 명령줄 터미널에서 동일한 쉘 명령을 실행하면 성공적으로 실행됩니다.

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"'])

관련 정보