gpt4 book ai didi

带有rsh选项的python popen rsync

转载 作者:太空狗 更新时间:2023-10-30 01:09:31 26 4
gpt4 key购买 nike

我正在尝试通过子进程和 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)

如果我复制/粘贴我当时输出的相同参数,我就能正确执行命令。

谢谢。

最佳答案

如果您改用 '--rsh=ssh -C -p 22 -i/home/bond/.ssh/test' 会发生什么(我删除了双引号)。

我怀疑这应该有效。当你将你的行剪切/粘贴到命令行时会发生什么是你的 shell 看到双引号并删除它们但使用它们来防止 -C -p 等被解释为单独的参数。当您使用列表调用 subprocess.Popen 时,您已经在没有 shell 帮助的情况下对参数进行了分区,因此您不再需要引号来保留应该拆分参数的位置。

关于带有rsh选项的python popen rsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12495455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com