使用Python打开(并保持)远程连接

1 投票
3 回答
785 浏览
提问于 2025-04-17 04:15

我正在使用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复制文件 的教程,可能对你有帮助。

撰写回答