Nagios输出格式

时间:2016-02-05 13:59:25

标签: bash awk sed snmp nagios

简短版本:

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

./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中成功执行服务测试检查,但是显示主机和服务值的页面是给出(在stdout上没有输出)的页面。

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

上面的支票是否有'整洁'的方式?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您可以使用单个sed(使用短划线作为锚点)来执行此操作:

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

或单个awk:

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

答案 1 :(得分:0)

我的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