gpt4 book ai didi

python - python子进程中的rsync + ssh在目录名中出现空格错误

转载 作者:太空狗 更新时间:2023-10-30 03:05:37 26 4
gpt4 key购买 nike

当我运行我的 Python 应用程序(在本地同步远程目录)时,如果包含我的应用程序的目录的名称中有一个或多个空格,我就会遇到问题。目录名称出现在 ssh 选项中,例如“-o UserKnownHostsFile=<path>”和“-i <path>”。我尝试在生成命令字符串的函数中用双引号引用路径,但没有。我也尝试像这样替换空格:path.replace(' ', '\\ ') ,但它不起作用。请注意,我的代码适用于不带空格的目录名。ssh 返回的错误是“行尾的垃圾”(代码 12)生成的命令行似乎没问题..

rsync -rztv --delete --stats --progress --timeout=900 --size-only --dry-run \
-e 'ssh -o BatchMode=yes \
-o UserKnownHostsFile="/cygdrive/C/Users/my.user/my\ app/.ssh/known_hosts" \
-i "/cygdrive/C/Users/my.user/my\ app/.ssh/id_rsa"'
user@host:/home/user/folder/ "/cygdrive/C/Users/my.user/my\ app/folder/"

我做错了什么?谢谢!

最佳答案

您是否尝试过将命令构建为参数列表 - 我只是在为 ssh 连接传递 key 文件时遇到了类似的问题:

command = [
"rsync",
"-rztv",
"--delete",
"--stats",
"--progress",
"--timeout=900",
"--size-only",
"--dry-run",
"-e",
"ssh -o BatchMode=yes -o UserKnownHostsFile='/cygdrive/C/Users/my.user/my\ app/.ssh/known_hosts' -i '/cygdrive/C/Users/my.user/my\ app/.ssh/id_rsa'",
"user@host:/home/user/folder/",
"/cygdrive/C/Users/my.user/my\ app/folder/"
]

sp = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = sp.communicate()[0]

关于python - python子进程中的rsync + ssh在目录名中出现空格错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11436183/

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