循环直到语句为真

时间:2019-09-29 16:56:29

标签: python python-3.x

我正在尝试编写python脚本来检查Linux PC上udp端口5900的状态,并在建立连接时提醒我。

我已经能够从os中获得所需的信息,但是正在努力寻找一种合理的方法来执行循环,直到检测到已建立的连接为止。

import os

stream = os.popen("ss -lu '( sport = 5900 )'")

output = stream.read()

我想运行一个循环,直到出现连接,然后打印“检测到连接”。我是python的新手,所以如果我错过了明显的内容,请原谅。

2 个答案:

答案 0 :(得分:1)

使用while True无限循环创建自定义看门狗。在其中,您可以在循环的每次迭代中检查输出,如果输出包含预期的字符串,请中断循环。

这种无限循环也可以持续更长的时间,因此您也可以根据需要添加一个计时器。在这种情况下,您的程序将等待条件之一,即预期输出或超时。参见下面的示例。

import time
import os

cmd = "ss -lu '( sport = 5900 )'"

timeout = time.time() + 60 # added 60 seconds to current time

while True:
    stream = os.popen(cmd).read()
    if 'connection detected' in stream:  # check your expected string in stream
        print('Connection detected breaking loop')
        break
    if time.time() > timeout:  # checking for timeout
        print('Timeout Occur')
        break

答案 1 :(得分:0)

您可以尝试实现无限循环,直到检测到连接为止。当检测到连接时,您可以打印所需的消息并退出循环。像这样: while True: if connection_detected: print("Connection Detected") break 或者,如果即使在检测到连接后仍要继续检查另一个连接,则可以跳过最后一行中的break语句。