Python pexpect 检查服务器是否启动

Python pexpect Check if server is up

我正在 CentOS 上自动执行几个配置步骤。为此,我还需要重新启动系统。我正在通过 python pexepct 调用 "reboot" 命令,但是我需要等到系统启动才能执行剩余的脚本。为此我写了这么一小段代码。

    while True:
        result = commands.getoutput("ping -c 4 192.168.36.134")
        if result.find("Unreachable") == 1:
            result = False
            print 'Rebooting the Systems.'
        else:
            result = True
            print 'Connected!'
            break

有更好的方法吗?另外,我们可以用 pexepct 本身来实现吗?

你可以试试这个:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# wait host to finish reboot, check specific port connection (usually ssh port if you want to exec remote commands)
while True:
    try:
        s.connect(('hostname', 22))
        print "Port 22 reachable"
        break
    except socket.error as e:
        print "rebooting..."
# continue
s.close()

这个例子比使用 ping 更有效