我想将基于Windows的Zabbix代理的平均ping结果绘制到我们基于云的呼叫中心服务器的远程地址。我已经弄清楚如何返回1(成功ping)或0(unsuccesful ping)的结果,但这在我的场景中没用。
我知道这不是Zabbix所固有的。我发现甚至接近的唯一方法是在zabbix_agentd.conf文件中设置一个用于ping远程IP地址的UserParameter,以及GREP所需的信息。不幸的是,GREP只返回包含我正在寻找的字符串的整行的值。
例如(从Zabbix代理ping):
ping 192.168.120.1 | grep "Average ="
返回:
Minimum = 46ms, Maximum = 51ms, Average = 49ms
我真正想要的只是49.这样我就可以用有用的方式绘制结果。
答案 0 :(得分:1)
这不是一个真正的zabbix问题。但无论如何。我没有窗口方便,所以我不能给你准确的cmd.exe代码。通常您需要的是通过标记(空格)拆分字符串并从数字中删除“ms”。使用cmd.exe,您可以按照here所述的第一部分进行操作。对于第二个,有很多关于如何操纵字符串的例子here。
鉴于您使用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。