Verwenden Sie netcat, um einen Port abzuhören und die Ausgabe eines Befehls zu senden, wenn ein Client eine Verbindung herstellt

Verwenden Sie netcat, um einen Port abzuhören und die Ausgabe eines Befehls zu senden, wenn ein Client eine Verbindung herstellt

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/dataan 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 ncatoder verwenden socat:

Serverseite

Wenn der Client eine Verbindung herstellt, führen Sie das ausführbare Programm aus /usr/bin/dataund 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

verwandte Informationen