【发布时间】:2019-09-16 19:18:31
【问题描述】:
我有这个由 nagios 运行的脚本,它检查提供程序 API 是否启用了缓解并报告回来。我只是从 Nagios 复制了一个示例,我没有任何 Python 知识。问题是有时脚本需要 10 秒才能运行,而 python 只是继续,所以我需要它等待执行。
我发现了一些使用子进程的成功示例,但我不知道如何将 .readline 和 .strip 添加到命令中。
这是原始脚本:
#!/usr/bin/python
import os, sys
mitigation_enabled=os.popen("/usr/local/nagios/libexec/check_mitigation.py
| grep auto | awk '{print $2}'").readline().strip()
if mitigation_enabled == "false":
print "OK - Mitigation disabled." .format (mitigation_enabled)
sys.exit(0)
elif mitigation_enabled == "true":
print "WARNING - Mitigation enabled." .format (mitigation_enabled)
sys.exit(1)
else:
print "UKNOWN - mitigation status unknown." .format (mitigation_enabled)
sys.exit(2)
那么我该如何使用子进程,等待外部脚本的执行并添加 .readline 和 .strip 值?
简短的问题,如何使这项工作:)
谢谢!
【问题讨论】:
-
为什么两个 Python 版本都标记了这个问题?
标签: python python-3.x python-2.7 subprocess