我正在尝试编写python脚本来检查Linux PC上udp端口5900的状态,并在建立连接时提醒我。
我已经能够从os中获得所需的信息,但是正在努力寻找一种合理的方法来执行循环,直到检测到已建立的连接为止。
import os
stream = os.popen("ss -lu '( sport = 5900 )'")
output = stream.read()
我想运行一个循环,直到出现连接,然后打印“检测到连接”。我是python的新手,所以如果我错过了明显的内容,请原谅。
答案 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语句。