【发布时间】:2020-09-03 08:47:31
【问题描述】:
我正在编写一个 Python 自动化脚本来通过 rsync 上传文件。从 Bash 运行它可以工作
/usr/bin/rsync -av -e “/usr/bin/ssh -i $PATH_TO_SSH_IDENTITY_KEY” $SRC USER@HOSTNAME:/firstparam/secondparam
但是,从 Python 运行会出现此错误
rsync error: syntax or usage error (code 1) at main.c(1407) [client=3.0.6]
这是调用 rsync 的代码
cmd = ['/usr/bin/rsync', '-av', '-e', config.ssh_identity, src, config.host + ':/rootpath' + firstparam + '/' + secondparam]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
(output, err) = p.communicate()
在哪里
config.ssh_identity = ‘/usr/bin/ssh -i $PATH_TO_SSH_IDENTITY_KEY’
config.host = ‘USER@HOSTNAME’
什么可能导致错误?
【问题讨论】:
-
先尝试从
os.environ获取PATH_TO_SSH_IDENTITY_KEY。 -
您可能需要
shell=False,因为您正在传递一个参数数组并且不希望它们中的任何一个被进一步分割为空格。
标签: python subprocess rsync