尝试在python子进程中运行rsync时出现意外的远程arg错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试在python子进程中运行rsync时出现意外的远程arg错误相关的知识,希望对你有一定的参考价值。

我正在尝试使用子进程模块的call()方法和用于身份验证的公钥在python 3.4中进行Rsync调用,以便我可以同步远程文件夹。文件夹的位置通过JSON动态传递。涉及的代码如下:

response_dict = json.loads(response)
source = 'user@server.example.com:' + response_dict['path'] + '/'
args = ['rsync', '-rv', '-e', '--delete', '--progress', '--update', 'ssh', '-i', '/path/to/public.key', source, '/path/to/local/folder/']
call(args)

我已尝试过该命令的几种变体,包括:

args = ['rsync', '-rv', '-e', 'ssh', '-i', '/path/to/public.key', source, '/path/to/local/folder/', '--delete', '--progress', '--update']

args = ['rsync', '-rv', '-e', 'ssh', '-i', '/path/to/public.key', '-l', 'user', source, '/path/to/local/folder/', '--delete', '--progress', '--update']

乃至

args = ['rsync', '-rv', '-e', 'ssh', '-i', '/path/to/public.key', '-l', 'user', 'user@server.example.com:' + response_dict['path'] + '/', '/path/to/local/folder/', '--delete', '--progress', '--update']

但是我得到了同样的错误:

Unexpected remote arg: user@server.example.com:/path/to/remote/folder/ 
rsync error: syntax or usage error (code 1) at main.c(1330) [sender=3.1.1]

我是python的新手,我一直在学习,但这个让我完全难过。我一直在谷歌搜索一整天和昨天的大部分时间,但我发现的类似问题的每个解决方案都没有效果。如果有人能帮我弄清楚出了什么问题,我们将不胜感激。

答案

首先,您应该验证ssh命令是否有效。如果没有,那么试图让它在Python中工作没有任何意义。

其次,-e命令应该是单个字符串,例如

args = ["rsync", "-rv", "-e", "ssh -i /path/to/public.key", "user@server.example.com:/path/to/remote/folder/", "/path/to/local/folder/", "--delete", "--progress" "--update"]

以上是关于尝试在python子进程中运行rsync时出现意外的远程arg错误的主要内容,如果未能解决你的问题,请参考以下文章

在 java 中运行 charAt 时出现意外的类型错误

尝试运行 Angular Universal 时出现“意外的令牌导入”错误

通过 Google 表格解析时出现“JavaScript 运行时意外退出”错误

尝试通过运行 Tkinter 的发送进程在进程之间通过管道发送任何内容时出现管道损坏错误

将子视图添加到 UICollectionViewCell 时出现意外行为

在 Typescript 项目上运行业力覆盖时出现意外令牌