Python检查客户端是否存在

2024-05-16 10:34:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,正在尝试制作一个脚本来检查指定的主机(例如sensu客户端)是否存在。我使用了一个名为NSO的部署软件并通过:nso status运行它,它显示了以下信息:

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

有没有可能制作一个脚本来检查nagios客户端是否存在脚本?你知道吗

在shell中,我是通过以下方式实现的:

nso status | awk '{ print $1 }'

Tags: test脚本client信息host客户端软件部署
3条回答

在这种情况下,我建议使用subprocess的check\u输出函数。文档是here。check\u 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。它允许您像导入库一样导入程序。你知道吗

您不必运行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')]

您可以使用subprocess来运行此命令并解析输出

import subprocess
command = ['nso', 'status', '|', 'awk', '\'{ print $1 }\'']
p1 = subprocess.Popen(command, stdout=subprocess.PIPE)

相关问题 更多 >