我正在尝试编写一个 python 脚本来通过 scp 将文件从远程服务器复制到本地目录。
因为我在 OpenELEC 发行版上运行它(最小的 HTPC linux 发行版,只读文件系统除了 userhome 使得安装 python ssh 模块不切实际),我这样做很丑,只是通过 os 将文件名传递给 scp 命令。系统。
SCPCopy = "scp -c blowfish -C user@host:\"" + pipes.quote(file) + "\" /storage/downloads/incoming/"
SCPCopy = SCPCopy.replace('\n','')
os.system(SCPCopy)
这有效,但包含撇号的文件名除外。
下面是在带有撇号的文件中传递给 os.system 的示例:
scp -c blowfish -C user@host:"'/media/sdi1/home/data/bob'"'"'s file.avi'" /storage/downloads/incoming/
和错误:
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
看起来 pipe.quote(x) 正在转义撇号(应该如此),但显然语法仍然不正确。我已经尝试过放弃 pipe.quote(x) 并用 /' 替换撇号,但这也没有让我有任何收获。