paramiko SFTP 在获取时挂起
我正在尝试使用 paramiko 通过 SFTP 获取文件。 它连接,我可以列出目录,它甚至下载文件的第一个兆字节左右,但随后它就挂起。没有异常,没有错误,什么都没有。它只是无限期地挂在那里。
这是我正在使用的代码:
import paramiko
t = paramiko.Transport( host )
t.connect( username=uname, password=passwd )
f = paramiko.SFTPClient.from_transport( t )
print f.listdir()
f.get( fname, fname ) #it hangs on this line :\
我可以通过 sftp 访问相关主机,但没有 shell 访问权限。 主机包含一个我需要定期获取并在 python 脚本中处理的文件。
非常感谢任何有关此问题的帮助或在 Python 中执行 SFTP 的替代解决方案:)
I'm trying to use paramiko to get a file via SFTP.
It connects, I can list directories and it even downloads the first megabyte or so of the file but then it just hangs. No exception, no error, nothing. It just hangs there indefinitely.
Here's the code I'm working with:
import paramiko
t = paramiko.Transport( host )
t.connect( username=uname, password=passwd )
f = paramiko.SFTPClient.from_transport( t )
print f.listdir()
f.get( fname, fname ) #it hangs on this line :\
I have sftp access to the host in question but no shell access.
The host contains a single file that I need to fetch regularly and process in a python script.
Any help with this problem or alternate solutions to doing SFTP in Python are greatly appreciated :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我遇到了和Ulfur同样的问题。他发布了自己的修复/解决方法作为对另一个答案的评论,因此我决定将其添加为正确的答案以使其更加明显。
基本思想是不使用
.get()
方法,而是循环遍历各行。以下是 Python 3 的实现。I was experiencing the same problem as Ulfur. He posted his own fix/workaround as a comment to another answer, so I decided to add it as a proper answer to make it more visible.
The basic idea is to not use the
.get()
method, but to loop over the lines. The following is a Python 3 implementation.我建议您在客户端上启动 Wireshark,看看协议级别发生了什么。您将无法读取数据包中的数据,因为数据将被加密,但您将看到 TCP/IP 级别发生的情况,这可能会提供线索。
I suggest you fire up Wireshark on the client and see what's happening at the protocol level. You won't be able to read the data in the packets as it will be encrypted, but you will see what's going on at the TCP/IP level and that might provide a clue.