Paramiko - ssh服务器在命令执行期间死亡 - >挂

时间:2012-09-11 12:45:37

标签: python ssh timeout paramiko python-2.x

我正在使用paramiko在python 2.7中编写一个小型自动化软件。在执行期间远程机器(ssh服务器)死机的可能性,我的paramiko客户端无法识别它并挂起在recv_exit_status()方法上。如果我为通道或传输设置超时,它什么都不做。 transport.set_keepalive()也没有帮助。

channel = transport.open_session()
channel.exec_command(cmd)
exit_code = channel.recv_exit_status()

我认为另一种方法也可能是好的:

transport.set_keepalive(1)
channel = transport.open_session()
channel.exec_command(cmd)
while not channel.exit_status_ready():
    time.sleep(1)
    print "waiting", str(transport.is_active())
exit_code = channel.recv_exit_status()

但是is_active()总是返回True,它永远不会变为False,即使在半分钟之后......我的sw线程很大,所以如果发生这种情况,线程会永久挂起阻塞方法recv_exit_status()并成为一个僵尸,我不能允许(大多数从专业的角度来看)。此外,我知道主动轮询通常是糟糕的编程技术,但无论如何我都试过了...谢谢你的帮助

0 个答案:

没有答案