因此,我根据这个示例https://en.wikipedia.org/wiki/Inetd创建了一个简单的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但没什么用。
发布于 2021-02-08 14:35:24
由于您提到了日志记录服务,所以可以使用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发布于 2021-02-08 16:09:59
您已经在UDP端口9999上创建了一个侦听服务。为了写到这一点,您需要使用一个可以创建UDP数据包的工具,而ssh不是其中之一。
netcat工具可以生成UDP数据包,例如,我使用的版本如下,
echo hello | nc -u -q1 remoteHost 9999 # Some versions of nc still also need "-w1"https://unix.stackexchange.com/questions/633291
复制相似问题