【发布时间】:2012-07-11 15:33:08
【问题描述】:
当我运行我的 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/"
我做错了什么?谢谢!
【问题讨论】:
-
在从 Python 调用它之前,这个命令在你的 shell 中真的有效吗?我不确定您是否是 a) 成功访问 known_hosts 文件 b) 成功地在两个主机之间预先建立了 ssh 隧道
-
是的,当路径名中有空格时,它在 Python 中有效。