Nagios python脚本等待执行

问题描述 投票:0回答:1

我有这个由nagios运行的脚本,如果启用了缓解并报告回来,它会检查提供者API。我刚从Nagios复制了一个例子,我没有任何Python知识。问题是有时脚本需要10秒才能运行而python只是继续,所以我需要它等待执行。

我发现一些使用subprocess的例子很成功,但我不知道如何将.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-3.x python-2.7 subprocess
1个回答
0
投票

您抱怨古老的历史API允许零字节的“短读取”。是的,这是正确的,它按设计工作。

建议您直接使用subprocess

另外,两个关于awk '{print $2}'的尼特:

  1. 通过调用grep删除awk '/auto/ {print $2}'
  2. 使用awk删除split()孩子的开销。
© www.soinside.com 2019 - 2024. All rights reserved.