【发布时间】:2012-09-11 19:20:28
【问题描述】:
我正在尝试通过 subprocess & popen 执行 rsync 命令。一切都很好,直到我没有将 rsh 子命令放在出错的地方。
from subprocess import Popen
args = ['-avz', '--rsh="ssh -C -p 22 -i /home/bond/.ssh/test"', 'bond@localhost:/home/bond/Bureau', '/home/bond/data/user/bond/backups/']
p = Popen(['rsync'] + args, shell=False)
print p.wait()
#just printing generated command:
print ' '.join(['rsync']+args)
我已经尝试以多种方式逃避 '--rsh="ssh -C -p 22 -i /home/bond/.ssh/test"',但似乎这不是问题。
我收到了错误 rsync:执行 ssh -C -p 22 -i /home/bond/.ssh/test 失败:没有这样的文件或目录(2)
如果我复制/粘贴当时输出的相同参数,我将正确执行命令。
谢谢。
【问题讨论】:
-
只是一个提示,与您的问题无关:如果您在
~/.ssh/config中添加一些行,即Host mybackup,Hostname localhost,User bond,Port 22(这是多余的) 、Compression yes和IdentityFile /home/bond/.ssh/test,你可以使用['rsync', '-avz', 'mybackup:/home/bond/Bureau', ''/home/bond/data/user/bond/backups/']。 -
@mgilson 你的应该是一个答案......
-
@glglgl 感谢您的提示。就我而言,我必须处理许多用户/端口,这就是为什么我更喜欢使用 rsh 选项。
-
@glglgl -- 将其更改为答案。
-
@azerty 啊这样。在这种情况下,用于设置这些的专用界面可能是有意义的。