使用“logger”命令发送 UDP 数据包

使用“logger”命令发送 UDP 数据包

我有几种不同的解决方案来运行自定义系统日志服务器(基于https://gist.github.com/marcelom/4218010)。

我面临的问题是以下命令不会向服务器发送 UDP 数据包:

logger -n 127.0.0.1 -P 514 "Test message"

我是否正确发送了测试消息?

你知道我做错了什么吗?这些脚本显然应该可以工作,但我无法在测试期间确认它们是否有效。

编辑:我确认 syslog 接收器确实在接收使用 UDP 协议发送的消息。因此,我也通过删除此部分澄清了问题。

答案1

使用 netcat 的另一种解决方案:

echo -n "test message" | nc -4u -w1 <host> <udp port>

答案2

我昨天试图弄清楚为什么我无法跨不同的机器登录以测试我们的远程日志记录,这让我失去了理智

事实证明,包含“logger”的 util-linux/bsdutils 核心包已安装版本 2.20.1,并且该版本会默默忽略 -n 开关。以下是我发现的情况:

  • 从 2.21 到 2.24 的所有较新版本的记录器均可构建并正常运行。
  • 2.20.1 版本构建良好,但与安装的版本一样忽略了 -n 开关。
  • 从 12.04 开始的所有 Ubuntu 版本(包括“trusty”)都包含 2.20.1 :(

解决方案:

从以下位置获取最新的 util-linux:ftp://ftp.kernel.org/pub/linux/utils/util-linux/

解压、./configure、制作并将二进制文件从./misc-utils/logger 复制到 /usr/local/bin/logger。

您可能需要刷新 shell,例如“source ~/.bashrc”,以使 /usr/local/bin 版本生效。使用“logger -V”确认新记录器已安装,它应该不是不再说“来自 util-linux 2.20.1 的记录器”。

答案3

以下是我的使用方法回声网猫用于发送 TCP 和 UDP 系统日志消息。

UDP

echo "<14>Test $RANDOM" | nc -v -u -w 0 127.0.0.1 514

TCP

echo "<14>Test $RANDOM" | nc -v -w 0 127.0.0.1 1514

相关内容