如何访问 inetd 服务?

如何访问 inetd 服务?

所以我根据这个例子创建了一个简单的inetd错误日志服务https://en.wikipedia.org/wiki/Inetd

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
  const char *fn = argv[1];
  FILE *fp = fopen(fn, "a+");

  if (fp == NULL) 
    exit(EXIT_FAILURE);

  char str[4096];
  /* inetd passes its information to us in stdin. */
  while (fgets(str, sizeof str, stdin)) {
    fputs(str, fp);
    fflush(fp);
  }
  fclose(fp);
  return 0;
}

我将此行附加到/etc/services/

errorLogger 9999/udp

这条线到/etc/inetd.conf

errorLogger dgram udp wait root /usr/local/bin/errlogd errlogd /tmp/logfile.txt

我现在如何访问这个?我在本地网络中的 Raspberry Pi 上配置了该服务。我需要编写一个访问 UDP 端口 9999 的客户端程序还是可以通过 SSH 来实现?

我已经尝试过了

ssh pi@raspberrypi -p 9999

但它说ssh: connect to host raspberrypi port 9999: Connection refused

我还重新加载了 systemd 服务

sudo service inetd reload

但这没有帮助。

答案1

既然您提到了日志服务,您可以使用以下命令写入它logger

logger --udp --port 9999 --server 127.0.0.1 'test msg'

另一个多功能实用程序是socat

echo 'test msg' | socat -u - udp-sendto:127.0.0.1:9999

答案2

您已在 UDP 端口 9999 上创建了一个侦听服务。为了写入此内容,您需要使用可以创建 UDP 数据包的工具,但ssh不是其中之一。

netcat工具可以生成UDP数据包,例如我的版本是这样使用的,

echo hello | nc -u -q1 remoteHost 9999    # Some versions of nc still also need "-w1"

相关内容