そのため、この例に基づいて単純な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"