Ich habe einen Raspberry Pi (Debian Linux) an mein LAN angeschlossen, der Daten von einigen angeschlossenen Geräten lesen und an STDOUT ausgeben kann.
Nehmen wir an, das Programm wird auf dem „Server“ ausgeführt und ich möchte die Ausgabe des Skripts /usr/bin/data
an Port 1234 bereitstellen.
Ich möchte, dass jeder Client die Ausgabe des Skripts abruft, indem er sich mit diesem Port verbindet, und zwar mit etwas wie
nc Server 1234 > ServerData.txt
Ich möchte, dass der Server aktiv bleibt, das Skript für jede Verbindung ausführt, die Daten bereitstellt und dann die Verbindung zum Client schließt. Der Server muss aktiv bleiben und auf die nächste Verbindung warten.
Welcher Netcat-Befehl muss auf dem Server ausgeführt werden???
Antwort1
Sie benötigen eine der fortgeschritteneren Versionen von Netcat. Sie können ncat
oder verwenden socat
:
Serverseite
Wenn der Client eine Verbindung herstellt, führen Sie das ausführbare Programm aus /usr/bin/data
und senden Sie die Programmausgabe an den Client.
NCAT-Methode:
$ ncat -l 1234 -c '/usr/bin/data' --keep-open
SOCAT-Methode
$ socat -U TCP-LISTEN:5403,fork EXEC:'/usr/bin/data',stderr,pty,echo=0
Client-Seite:
Stellen Sie eine Verbindung zum Server her und empfangen Sie die Ausgabe vom Server.
NCAT-Methode zum Ablegen
$ ncat Server 1234 | tee ServerData.txt
NC (Netcat)-Methode für stdout
$ </dev/null nc <Server.ip> 5403 > /dev/stdout
zum Speichern in einer Datei ersetzen Sie /dev/stdout durch einen Dateinamen
WGET-Methode zur Datei
$ wget -q <Server.ip>:5403 -O myfile.txt
um Ergebnisse auszudrucken, ersetzen Sie myfile.txt durch /dev/stdout