【问题标题】:pb nagios python return nullpb nagios python 返回空值
【发布时间】: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


【解决方案1】:

另一个论坛的人给了我解决方案。我必须使用 float() 而不是 int(),因为我将变量与 float 进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    相关资源
    最近更新 更多