【发布时间】:2018-10-23 11:29:13
【问题描述】:
我有一个带有 python 脚本的 pb,它使用 bash 命令(我没有解决这个 pb pb nagios bash script null result in if 所以我尝试对 python 做同样的事情)。我使用以下命令获取变量中的磁盘空间:
total=sp.Popen(["/srv/eyesofnetwork/nagios/plugins/check_nt", "-H", host,"-p", "12489", "-s", '', "-v", "USEDDISKSPACE", "-l", lecteur], stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE).communicate()[0].split("\n")
我得到值 "OK e:: 4.701TB/5TB used|'e: free'=306.11612G;20;5;0;5119.87206 'e: free %'=6%;0;0 ;0;100\n" 所以我使用这个命令只获取磁盘大小(我知道它不干净但我不是python专家):
total=int(str(total).split()[3].split(',')[0])
但是当我将此行添加到脚本时,nagios 会返回“null”作为信息。当我手动运行脚本时,它可以工作,当我评论这一行时,它也可以在 nagios 界面中工作。我需要这个值来根据磁盘大小修改警告和临界阈值。我不明白,因为我不返回这个值,我只是在脚本中使用它来执行另一个带有 IF 的命令:
if total < 2.05 :
sp.Popen(["/srv/eyesofnetwork/nagios-3.5.1/plugins/check_nrpe", "-H", host, "-c", "check_drivesize", "-a", "drive=" + lecteur, "warning=free<0.2G", "critical=free<0.1G", "show-all", "perf-config=*(unit:G)"])
elif total >= 2.05 and total < 99.99.......
谢谢。
【问题讨论】:
-
我删除了 int() : => total=str(total).split()[3].split(',')[0] 现在它可以工作了。现在我有一个带有这个变量的 pb: res=str(resultat).split()[0].split('"')[1] 当我删除“[1]”时它可以工作。上面有一个变量 res =str(resultat).split()[0] 哪个有效。太疯狂了。有人有解释吗?
标签: python-2.7 nagios