我在 Ubuntu 12 上使用 Python 2.7 运行这些代码片段。
import subprocess
args = ['rsync', '--rsh="ssh"', '/tmp/a/', '127.0.0.1:/tmp/b/']
subprocess.check_call(args)
Fails
import subprocess
args = ['rsync', '--rsh="ssh"', '/tmp/a/', '127.0.0.1:/tmp/b/']
call_string = ' '.join(args)
subprocess.check_call(call_string)
Works
第一个代码片段导致 rsync 获得无效的命令行。使用此选项的简短版本(-e
)没有任何区别。如果我删除--rsh
部分工作正常。
Using shell=True
没有任何区别。删除“ssh”中的引号没有任何区别,我想保留引号,以便可以将参数传递给 ssh。
有什么问题?
删除周围的引号ssh
; shell 通常会解析这些并传递参数without引用:
import subprocess
args = ['rsync', '--rsh=ssh', '/tmp/a/', '127.0.0.1:/tmp/b/']
subprocess.check_call(args)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)