그래서 이 예제를 기반으로 간단한 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"