小编eva*_*njd的帖子

使用python将带有撇号的文件名传递给scp

我正在尝试编写一个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)
Run Code Online (Sandbox Code Playgroud)

这适用,但包含撇号的文件名除外.

下面是一个在带有撇号的文件中传递给os.system的示例:

scp -c blowfish -C user@host:"'/media/sdi1/home/data/bob'"'"'s file.avi'" /storage/downloads/incoming/
Run Code Online (Sandbox Code Playgroud)

而错误:

sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)

它看起来像pipes.quote(x)正在逃避撇号(应该如此),但显然语法仍然不正确.我已经尝试过丢弃pipes.quote(x)并用/'替换撇号,但这也没有让我到任何地方.

python bash scp

2
推荐指数
1
解决办法
2666
查看次数

标签 统计

bash ×1

python ×1

scp ×1