![如何通过 netcat 查询 munin 插件?](https://linux22.com/image/621306/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20netcat%20%E6%9F%A5%E8%AF%A2%20munin%20%E6%8F%92%E4%BB%B6%EF%BC%9F.png)
我想从 Nagios 查询现有的 Munin 插件。因为我想做一些计算和聚合(插件报告一段时间内的数据),而不仅仅是查看最后的值,所以可用的插件查询 Munin 数据,例如检查_munin似乎不合适。所以我的想法是获取整个fetch
输出并进行解析。然而,由于我无法理解的原因,这似乎带来了问题。
如果我fetch my-plugin
在发出后手动输入nc my-munin-node 4949
,我会得到预期的数据输出。如果我尝试编写脚本,它不会按预期运行:
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
TCP RST
没有任何尾随数据。运行网络跟踪显示远程 Munin 节点确实开始发送数据,但立即从请求者端获取。
答案1
如果发生以下情况,Netcat 将关闭连接末梢血正在通过输入文件描述符接收。由于echo "string" | nc
语法正在发送“细绳”紧接着末梢血,netcat
会立即断开连接,而不接受来自远端的任何数据。
更合适的语法是这样的
(echo "fetch my-plugin" && sleep 5) | nc my-munin-node 4949
这边走,末梢血除非返回,否则不会发送sleep
- 在此示例中,这将花费 5 秒。时间间隔应选择足够长的时间以fetch my-plugin
完成并传输所有数据。