有没有办法检查paramiko
SSH连接是否还活着?
In [1]: import paramiko
In [2]: ssh = paramiko.SSHClient()
In [3]: ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
In [4]: ssh.connect(hostname)
我想模仿这样的东西(目前还没有)
In [5]: ssh.isalive()
True
答案 0 :(得分:10)
我观察到is_active()返回误报。
我建议使用这件作品:
# use the code below if is_active() returns True
try:
transport = client.get_transport()
transport.send_ignore()
except EOFError, e:
# connection is closed
答案 1 :(得分:9)
if ssh.get_transport() is not None:
ssh.get_transport().is_active()
应该这样做....假设我读了docs权利。
答案 2 :(得分:2)
对我而言,上述答案并不起作用,所以我通过发送带有超时的 exec_command()来完成它:
self.ssh.exec_command('ls', timeout=5)
例如,完整的方法将如下:
def check_connection(self):
"""
This will check if the connection is still availlable.
Return (bool) : True if it's still alive, False otherwise.
"""
try:
self.ssh.exec_command('ls', timeout=5)
return True
except Exception as e:
print "Connection lost : %s" %e
return False
我每5秒左右调用一次。