我是python的新手,正在努力创建一个脚本来检查指定的主机是否存在例如sensu-client。我使用名为NSO的部署软件并通过以下方式运行它:nso status
它向我显示了这些信息:
nagios-client host nagios-client down
test host test down
是否有可能制作一个脚本来检查例如nagios-Client是否存在脚本?
在shell中我是这样做的:
nso status | awk '{ print $1 }'
答案 0 :(得分:1)
您可以使用子进程运行此命令并解析输出
import subprocess
command = ['nso', 'status', '|', 'awk', '\'{ print $1 }\'']
p1 = subprocess.Popen(command, stdout=subprocess.PIPE)
答案 1 :(得分:1)
在这种情况下,我建议使用子进程' check_output函数。文档是here。 check_output可以作为字符串返回命令的shell输出。所以你会有这样的事情:
import subprocess
foo=subprocess.check_output(['nso', 'status', '|', 'awk', '\'{ print $1 }\''], shell=True)
#Thanks bereal for shell=True
print foo
当然,如果你只针对linux,你可以使用更简单的sh module。它允许您导入程序,就像它们是库一样。
答案 2 :(得分:0)
您不必运行awk
,因为您已经使用Python了:
import subprocess
proc = subprocess.Popen(['nso', 'status'], stdout=subprocess.PIPE)
# get stdout as a EOL-separated string, ignore stderr for now
out, _ = proc.communicate()
# parse the output, line.split()[0] is awk's $1
items = [line.split()[0] for line in out.split('\n')]