0

我想绘制从基于 Windows 的 Zabbix 代理到我们基于云的呼叫中心服务器的远程地址的平均 ping 结果。我已经想出了如何返回 1(成功 ping)或 0(不成功 ping)的结果,但这在我的场景中没有用。

我知道这不是 Zabbix 固有的。我发现的唯一方法是在 zabbix_agentd.conf 文件中设置一个 UserParameter 来 ping 远程 IP 地址,并 GREP 所需的信息。不幸的是,GREP 只会返回包含我要查找的字符串的整行的值。

例如(从 Zabbix 代理 ping):

ping 192.168.120.1 | grep "Average ="

返回:

Minimum = 46ms, Maximum = 51ms, Average = 49ms

我真正想要返回的只是 49。这样我就可以用一种有用的方式绘制结果。

4

1 回答 1

1

这不是一个真正的 zabbix 问题。但不管怎么说。我手边没有 Windows,所以我不能给你确切的 cmd.exe 代码。通常,您需要用标记(空格)拆分字符串并从数字中删除“ms”。使用 cmd.exe 您可以按照第一部分的说明进行操作。其次,这里有很多关于如何操作字符串的示例。

给定你 use grep,我可以假设你已经安装了 cygwin 或其他东西。那么你可能会有更好的awk运气sed。例子

$ ping -c 1 8.8.8.8 | grep "packet loss"
1 packets transmitted, 1 received, 0% packet loss, time 25ms    
$ ping -c 1 8.8.8.8 | awk '/packet loss/ { gsub("%","",$6);print $6}'
0

我能给的最好的建议是使用更高级的语言来进行这种操作。Windows 上的 Powershell 或 VB。

于 2013-07-03T22:37:19.750 回答