Ping 直到成功签入 Python,然后中断分配变量

Ping until success check in Python, then break assign variable

我有以下一段 Python 2.7 代码:

def getGateway():
""" Use the configuration to determine valid gateway
    If more GWs are present, one will be chosen by random.choice
"""
localServer = ThisLocalServer(log=LOG)
gw=localServer.getRandomAgentGateway()
print "See if its a string %s - %s" % (gw,type(gw))
candidate = "gw"
response = os.system("ping -c 1 " + candidate)
if response == 0:
    print candidate, 'is up!'
    return gw
else:
    print candidate, 'is down we need a new gatewuy'

用例如下: 我的软件使用 getRandomAgentGateway 确定 IP。不幸的是,它并不像我希望的那样智能,有时结果是无法访问 IP。我想建立一个 ping 检查,它将: A) 使用已经内置的 getRandomAgentGateway 获取一个 IP(列表中只有两个) B) ping IP C) 确保这个 IP 是可达的,如果是 - 传递一个可达的 IP,跳出循环并执行 "return gw" ,如果不是 - 留在循环中并再次调用 "getRandomAgentGateway()" 直到它找到一个可达的知识产权

我无法修改 getRandomAgentGateway,所以我想在这里建立 ping 检查。任何帮助将不胜感激。

看来你的逻辑有问题

candidate = "gw"

好像做错了。你需要的大概是

if isinstance(gw,str):
    # do whatever

实际上,为什么 getRandomAgentGateway return 不是 str 的答案?

最后,为了使它起作用,您可能应该尝试多次,写下如下内容:

def teste():
    max_number_of_tries = 2
    current_try = 0
    while current_try < max_number_of_tries: 
        gw=getRandomAgentGateway()
        if isinstance(gw,str): 
            response = os.system("ping " + gw)
            if response == 0:
                print( gw, 'is up!')
                return gw
            else:
                print( gw, 'is down we need a new gatewuy, trying again')
        current_try += 1
        print ( "Too much tries" )