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"

관련 정보