小编Vye*_*Vye的帖子

当SFTP对象存储在字典中时,为什么Paramiko会提高EOFError()?

我正在编写一个应用程序,我正在编写下载文件,并通过SSH从其他文件夹上传文件.我遇到的问题是我可以获得(下载)文件,但是当我尝试将它们(上传)到另一台服务器上时,我得到一个EOFError()异常.当我在paramiko\sftp.py中查看_write_all()时,似乎错误是在它无法向流中写入任何数据时引起的?我没有网络编程经验,所以如果有人知道它正在尝试做什么,并且能够与我沟通,我会很感激.

我写了一个简化版本的函数来处理我的连接为ssh().runCommand()显示了我的应用程序中的上传失败,而simpleTest()显示了sftp put是如何工作的,但除了我的SFTP对象的存储方式之外,我看不出runCommand()和simpleTest()之间的任何区别.一个存储在字典中,另一个存储在字典中.似乎字典是下载文件不起作用的问题,但事实并非如此.

有没有人知道什么可能导致这种行为,或者如果这种方式导致问题,可以推荐另一种方式来管理我的连接?

我正在使用Python 2.7和Paramiko 1.7.6.我已经在Linux和Windows上测试了这段代码,并得到了相同的结果.

编辑:现在包括代码.

import os
import paramiko

class ManageSSH:
     """Manages ssh connections."""
    def __init__(self):
        self.hosts = {"testbox": ['testbox', 'test', 'test']}
        self.sshConnections = {}
        self.sftpConnections = {}
        self.localfile = "C:\\testfile"
        self.remotefile = "/tmp/tempfile"
        self.fetchedfile = "C:\\tempdl"

    def ssh(self):
        """Manages ssh connections."""
        for host in self.hosts.keys():
            try:
                self.sshConnections[host]
                print "ssh connection is already open for %s" % host
            except KeyError, e:         # if no ssh connection for the host exists then open one
                # open ssh connection …
Run Code Online (Sandbox Code Playgroud)

python ssh sftp paramiko

7
推荐指数
1
解决办法
1万
查看次数

关闭Twisted conch SSH连接的正确方法是什么?

关闭Twisted conch SSH连接的正确方法是什么?有没有明确的方法来做到这一点?

我见过的所有Twisted海螺的例子都关闭了SSH通道,然后停止了反应堆.反应堆关闭似乎处理关闭连接.但是,我正在使用带有wxPython的wxreactor,我不想停止反应堆,但是当我完成它时我想关闭ssh连接.

看完tcsconnection之后,看起来似乎是serviceStopped()方法.它关闭所有打开的通道并在完成时运行_cleanupGlobalDeferreds(),但后来我开始获得如下所示的异常:

Unhandled Error
Traceback (most recent call last):
  File "C:\Users\me\venv\lib\site-packages\twisted\internet\tcp.py", line 203, in doRead
    return self._dataReceived(data)
  File "C:\Users\me\venv\lib\site-packages\twisted\internet\tcp.py", line 209, in _dataReceived
    rval = self.protocol.dataReceived(data)
  File "C:\Users\me\venv\lib\site-packages\twisted\conch\ssh\transport.py", line 438, in dataReceived
    self.dispatchMessage(messageNum, packet[1:])
  File "C:\Users\me\venv\lib\site-packages\twisted\conch\ssh\transport.py", line 460, in dispatchMessage
    messageNum, payload)
--- <exception caught here> ---
  File "C:\Users\me\venv\lib\site-packages\twisted\python\log.py", line 84, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "C:\Users\me\venv\lib\site-packages\twisted\python\log.py", line 69, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "C:\Users\me\venv\lib\site-packages\twisted\python\context.py", line 118, in callWithContext …
Run Code Online (Sandbox Code Playgroud)

python twisted twisted.conch

5
推荐指数
1
解决办法
1435
查看次数

标签 统计

python ×2

paramiko ×1

sftp ×1

ssh ×1

twisted ×1

twisted.conch ×1