需要一种方法来测试SSH超时

时间:2016-09-16 22:48:46

标签: python ssh

这是我当前测试主机是否支持SSH的代码。当主机启动或不运行SSH服务时,它可以正常工作。但是,它似乎只是在主机崩溃时挂起,这是我需要依赖它的独特用例,它给我一个快速的真/假响应。由于操作系统和其他依赖项,我们现在需要将Python版本保持为2.6。所以我需要一种方法来使这个功能工作,并且超时为1-2秒。

import commands

def test_ssh(host):
    output = commands.getstatusoutput("ssh " + host + " hostname")
    if output[0] == 0:
        return True
    else:
        print(host + " not accessible via SSH!")
        return False

3 个答案:

答案 0 :(得分:0)

您需要确定它是否实际上是连接超时,或者它是否可以连接,但服务器正在接受连接并且不发送任何内容。

如果您要使用telnet手动测试,telnet 22并查看是否从服务器得到响应,如果它连接,您应该看到类似的内容:

$ telnet localhost 22
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.2

如果它连接并且你没有得到任何响应,那么我认为你将不得不尝试使用python中的套接字进行测试。

您可以在此处找到信息: https://docs.python.org/3/library/socket.html

答案 1 :(得分:0)

如果您想确保可以正确建立SSH连接(包括身份验证),最好的方法可能是以批处理模式连接一个小超时(-o BatchMode=yes -o ConnectTimeout=2)。

答案 2 :(得分:0)

您可以将ssh的电话打包到timelimit中,这样如果没有按时完成,它会在超时后被取消。