检查 paramiko ssh 连接是否仍然存在
Check if paramiko ssh connection is still alive
有没有办法检查 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
if ssh.get_transport() is not None:
ssh.get_transport().is_active()
应该这样做....假设我没看错docs。
我观察到 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
对我来说,上面的答案不起作用,所以我通过发送 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 秒左右调用一次。
有没有办法检查 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
if ssh.get_transport() is not None:
ssh.get_transport().is_active()
应该这样做....假设我没看错docs。
我观察到 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
对我来说,上面的答案不起作用,所以我通过发送 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 秒左右调用一次。