【问题标题】:Nagios Output FormattingNagios 输出格式
【发布时间】:2016-02-05 13:59:24
【问题描述】:

短版:

有没有更好的方法来写下面的支票?

./check_snmp -H x.x.x.x -o oidstring -C public | awk '{print $4}' | sed 's/.$/.&/' | sed -e 's/$/ KB/'

长版:

我有一个输出三位数字的 Nagios 服务检查:

./check_snmp -H x.x.x.x -o oidstring -C public

SNMP OK - 711 | iso.oidstring=711

这是我按照自己的喜好格式化它并给出准确值所做的:

./check_snmp -H x.x.x.x -o oidstring -C public | awk '{print $4}' | sed 's/.$/.&/' | sed -e 's/$/ KB/'

71.1 KB

输出是完美的,我可以在 CentOS 环境中运行命令而不会出现问题,但是当尝试在 Nagios 中实施检查时,服务没有返回和值,而是我得到(在 stdout 上没有输出)。

奇怪的是,我什至可以在 Nagios 中成功地执行服务测试检查,但是显示主机和服务值的页面却给出了 (No output on stdout)。

我认为 Nagios 不喜欢我尝试格式化输出的方式,至少在 Web 方面是这样。

有没有一种“更简洁”的方式来写上面的支票?

提前致谢。

【问题讨论】:

  • 我认为这不是您要问的问题,但是您可以不使用 sed 语句并将 awk 更改为 awk '{print ($4 / 10) " KB"}'

标签: bash awk sed snmp nagios


【解决方案1】:

您可以使用单个 sed 来完成(使用破折号作为锚点):

 ... | sed 's/^.*- \([0-9]*\)\([0-9]\) .*$/\1.\2 KB/'

或单个 awk:

... | awk '{printf "%s KB\n", $4/10}'

【讨论】:

  • 两个例子都很好用,谢谢! FTR,@jas 上面的例子也很好用。感谢您帮我清理丑陋的服务检查。
【解决方案2】:

我的 Icinga 显示一个空值。

$USER1$/check_snmp -H $HOSTADDRESS$ -C SNMP -o .1.3.6.1.2.1.33.1.2.5.0 $ARG1$ | awk '{printf "%s V\n", $4/10}'

当我手动执行此操作时,我得到了正确的输出:80.2V

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 2015-04-22
    • 2018-04-17
    相关资源
    最近更新 更多