【问题标题】:open (and maintain) remote connection with python使用 python 打开(并维护)远程连接
【发布时间】:2011-12-07 02:36:49
【问题描述】:

我正在使用 Python 传输(通过 scp)和数据库大量文件。我将文件传输到的其中一台服务器具有奇怪的 ssh 配置规则,以阻止来自单个位置的过多 ssh 请求。这样做的结果是我的 python 脚本,当前循环文件并通过 os.system 复制,在传输了几个文件后挂起。

有没有一种方法可以让 Python 打开 ssh 或其他与服务器的连接,以便传输的每个文件都不需要 ssh 登录实例?

谢谢,

【问题讨论】:

    标签: python sockets ssh scp


    【解决方案1】:

    这并不是真正的 python 特定的,但它可能取决于您可以使用哪些库。

    您需要一种通过单一连接发送文件的方法。 (不过,这可能更适合超级用户或 severfault.com。)

    • 在本地创建tarfile,上传并在目标解压?
      • 也许您甚至可以远程运行“tar xz”并通过 SSH 将文件上传到标准输入? (正如 MichaelDillon 在评论中所说,Python 可以动态创建 tar 文件......)
    • 是否可以选择 SFTP?
    • 通过 SSH 同步?
    • Twisted 是一个异步库,可以同时处理多个套接字/连接。不过,对于您的解决方案来说可能有点过分了,

    希望对你有帮助。

    【讨论】:

    • 我应该添加 - 数据正在创建和存储数月,因此 tar 和发送选项不可行,因为会不断创建新文件!
    • @radpotato:我假设 SSH 限制是每 y 分钟 x 个连接,在这种情况下,您可以批处理文件。但无论如何,SFTP 似乎是要走的路.. :)
    • 您实际上可以在发送文件时在 Python 中动态创建一个 tar 文件,以便接收端只获得一个文件。如果接收端正在运行tar xf -,那么您实际上永远不会将 tar 文件存储在任何地方。
    • @MichaelDillon:没错。这就是我的意思,但没有写出来。
    【解决方案2】:

    您可能想查看paramiko 模块。

    有一个使用它的 Copy files over SSH using paramiko 食谱可能会有所帮助。

    【讨论】:

      【解决方案3】:

      在 Python 模块 Paramiko 中查看 SFTP。您可以在一个会话中进行多个文件传输。

      【讨论】:

        猜你喜欢
        • 2012-01-28
        • 1970-01-01
        • 2014-06-26
        • 2012-02-18
        • 1970-01-01
        • 1970-01-01
        • 2017-03-11
        • 2018-10-05
        • 1970-01-01
        相关资源
        最近更新 更多