如何通过netcat查询一个munin插件?

我想从Nagios中查询一个现在的Munin插件。 因为我想做一些计算和聚合(插件报告一段时间内的数据),而不只是看最后的值,可用的插件查询Munin的数据,如check_munin似乎不合适。 所以我的想法是获取整个fetch输出并parsing它。 这似乎是一个我不明白的理由。

如果在发出nc my-munin-node 4949后手动inputfetch my-plugin ,我会得到预期的数据输出。 如果我尝试编写脚本,它不会按预期工作:

 echo "fetch my-plugin" | nc my-munin-node 4949 

只是什么都没有返回

 (sleep 1 && echo "fetch my-plugin") | nc my-munin-node 4949 

只返回这个munin-node横幅

 # munin node at my-munin-node 

没有任何尾随数据。 运行networking跟踪表明,远程的Munin节点确实开始发送数据,但是立即从请求者那里获得一个TCP RST

如果通过input文件描述符接收到EOF, Netcat将closures连接。 作为echo "string" | nc echo "string" | nc语法正在发送紧跟EOF“string”netcat立即断开连接,而不接收来自远端的任何数据。

一个更合适的语法将是类似的

 (echo "fetch my-plugin" && sleep 5) | nc my-munin-node 4949 

这样, EOF将不会被发送,除非sleep返回 – 在这个例子中将需要5秒。 时间间隔应该select足够长的时间来fetch my-plugin来完成并获取所有的数据传输。