我正在尝试编写一个检查Web服务器是否启动的函数。
我运行wget命令,然后检查字符串中200 OK
的结果。我正在使用in
运算符,但是它一直失败,并且我不确定自己在做什么错。
我已经在下面发布了我的代码。
感谢阅读。
import subprocess
web_address = "reddit.com"
wget = subprocess.Popen(["wget", "--spider", web_address], stdout=subprocess.PIPE)
output, err = wget.communicate()
response = output.decode('utf-8')
if '200 OK' in response:
print("its up")
else:
print("its down")
编辑:subprocess.getoutput()
解决了我的问题。
答案 0 :(得分:0)
wget
将所有消息记录到stderr
,您可以使用stderr
捕获stderr=subprocess.PIPE
的输出,然后检查err
,也可以重定向{{1 }}与stderr
一起stdout
,然后继续使用stderr=subprocess.STDOUT
,例如:
output
或使用In []:
wget = subprocess.Popen(["wget", "--spider", web_address], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output, err = wget.communicate()
'200 OK' in output.decode('utf-8')
Out[]:
True
通话:
check_output()
或使用In []:
output = subprocess.check_output(["wget", "--spider", web_address], stderr=subprocess.STDOUT, encoding='utf-8')
'200 OK' in output
Out[]:
True
(@Boris):
subprocess.run()