如果客户端存在则测试Python

时间:2015-02-21 16:00:15

标签: python shell python-2.7

我是python的新手,正在努力创建一个脚本来检查指定的主机是否存在例如sensu-client。我使用名为NSO的部署软件并通过以下方式运行它:nso status它向我显示了这些信息:

nagios-client host nagios-client down
test host test down

是否有可能制作一个脚本来检查例如nagios-Client是否存在脚本?

在shell中我是这样做的:

nso status | awk '{ print $1 }'

3 个答案:

答案 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')]