使用Python打开(并保持)远程连接
我正在使用Python通过scp传输和管理大量文件。其中一个我传输文件的服务器有一些奇怪的ssh配置规则,目的是防止来自同一个地方的ssh请求过多。结果就是,我的Python脚本在循环处理文件并通过os.system复制时,传输几个文件后就卡住了。
有没有办法让Python在连接到服务器时,打开一个ssh或其他连接,这样每次传输文件就不需要重新登录一次ssh呢?
谢谢,
3 个回答
0
这其实不是特别针对Python的内容,但可能跟你能用哪些库有关。
你需要的是一种通过单一连接发送文件的方法。 (不过这可能更适合在superuser或者serverfault.com上讨论。)
- 可以先在本地创建一个tar文件,然后上传到目标位置再解压吗?
- 也许你甚至可以在远程运行'tar xz',然后通过SSH把文件上传到标准输入?(正如MichaelDillon在评论中提到的,Python可以实时创建tar文件……)
- SFTP可以用吗?
- 通过SSH使用Rsync呢?
- Twisted是一个可以同时处理很多连接的异步库。不过对于你的需求来说,可能有点过于复杂了。
希望这些对你有帮助。
1
可以看看Python的一个模块叫做Paramiko,它支持SFTP。你可以在一次会话中传输多个文件。
2
你可能想了解一下 paramiko 这个模块。
这里有一个 使用paramiko通过SSH复制文件 的教程,可能对你有帮助。