
Ich verwende diesen Befehl, um den Port abzuhören und Daten in eine Datei zu schreiben:
while : ; do nc -l 0.0.0.0 10000 > log.txt & done
Die erste Anfrage funktioniert einwandfrei und wird in log.txt ausgegeben, aber nach der ersten Anfrage hört die NC nicht mehr zu, sondern wird angehalten.
Kann mir jemand sagen, was ich falsch mache?
Ich möchte nur, dass dies kontinuierlich im Hintergrund läuft und alle Anfragen von diesem Port in der Datei log.txt protokolliert ...
Antwort1
Sie müssen eine Option hinzufügen, umkeineDie Option hängt von der Version von abkeineSie ausführen. In meinem Fall (Kubuntu) ist die Option beispielsweise-k. Aus der Manpage:
-k Erzwingt, dass nc weiterhin auf eine andere Verbindung wartet, nachdem die aktuelle Verbindung hergestellt wurde. Es ist ein Fehler, diese Option ohne die Option -l zu verwenden.
Ich kann es nicht versprechen-kfunktioniert (es sei denn, Sie sind n Ubuntu, natürlich), müssen Sie nach etwas Ähnlichem suchen. Zum Beispiel auf meinem Debian,-kexistiert nicht, aber Sie finden:
-q Sekunden nach EOF auf stdin, die angegebene Anzahl an Sekunden warten und dann beenden. Wenn Sekunden negativ sind, ewig warten
Bearbeiten:
So überprüfen Sie, ob es auf einem PC funktioniert:
nc -k -l 0.0.0.0 10000 > out.txt
Auf einem zweiten PC:
echo Hello | nc IP_address_of_first_pc 10000
Geben Sie den obigen Befehl ein paar Mal ein und unterbrechen Sie dann diekeineBefehl auf PC1, überprüfen Sie die Zeilenanzahl in out.txt.