我正在调试一些代码,这将导致我不断登录/退出某些外部sftp服务器。有谁知道如果paramiko自动关闭外部服务器上的ssh/sftp会话,如果在代码中引发了非paramiko异常?我无法在文档中找到它,并且由于每次迭代都必须尽早完成连接,因此我不想以20个打开的连接结束连接。paramiko关闭ssh连接上一个非paramiko例外
9
A
回答
15
不,paramiko不会自动关闭ssh/sftp会话。如果例外由paramiko编码或其他方式产生,这并不重要; paramiko代码中没有捕获任何异常并自动关闭它们,所以你必须自己做。
可以确保它被封闭在一个尝试它包裹/ finally块,像这样:
client = None
try:
client = SSHClient()
client.load_system_host_keys()
client.connect('ssh.example.com')
stdin, stdout, stderr = client.exec_command('ls -l')
finally:
if client:
client.close()
3
SSHClient()可以作为一个上下文管理器,所以你可以做
with SSHClient() as ssh:
ssh.connect(...)
ssh.exec_command(...)
而不是手动关闭。
相关问题
- 1. Paramiko SSH隧道关闭问题
- 2. 通过paramiko(SSH)连接到多个主机是非常慢
- 3. 通过使用paramiko生成SSH连接
- 4. Paramiko连接时不询问SSH密钥
- 5. python paramiko ssh
- 6. 过的paramiko(SSH)
- 7. Paramiko连接问题
- 8. 连接从一个SSH会话中的paramiko远程主机
- 9. Paramiko SSHException频道关闭
- 10. 关闭记录中的paramiko
- 11. Python Paramiko/SSH错误
- 12. 的paramiko SSH蟒蛇
- 13. Python - PARAMIKO SSH close session
- 14. 的paramiko SSH - 与Python
- 15. 在paramiko ssh连接上执行su用户(无密码)
- 16. python paramiko logging meuff stfp连接
- 17. Paramiko关闭连接时发出的问题
- 18. 以编程方式关闭Paramiko中的SSH隧道
- 19. 与Paramiko设置virtualenv SSH
- 20. ssh客户端与paramiko
- 21. 使用的paramiko SSH通道
- 22. SSH - 与paramiko问题的Python
- 23. Paramiko/ssh/tail + grep挂起
- 24. 发送输入上的paramiko蟒SSH
- 25. Python,Paramiko:如何使用paramiko做“ssh -n user @ host cmd”?
- 26. 的paramiko无法打开,即使load_system_host_keys ssh连接+ WarningPolicy
- 27. Python:与Paramiko相关
- 28. 无法将SSH与paramiko连接到谷歌计算引擎实例
- 29. 使用Paramiko连接网络设备
- 30. paramiko允许无密钥的sftp连接
谢谢你,问题是我正在调试几千行代码(并且仍在添加它)。 paramiko没有提出例外情况,但在其他地方出现问题时,可以通过“subprocess”或“os”等方式说明。我想我可以在每个异常中都放置一个'client.close()',但这不是很漂亮。 – Ben
如果你将调用放在'try'块内的'subprocess'或'os',那么无论产生什么异常,总是会调用finally子块。如果你想让它变得更漂亮,那么你可能想要将客户端包装在一个'Context Manager'中并使用'with'语句。 http://docs.python.org/reference/datamodel.html#context-managers – aculich
这位先生是一个点,所以+1!不回答这个问题,并且如果所有的终端都是相同的,那么把每个单独的东西放在'try ... finally'块中是没有意义的。但是,把呼叫放到一个班级里面没什么问题,所以我总是很干净地关闭它。 – Ben