2012-09-04 1 views
6

ich einfach den Befehl:Wie sende ich eine Datei mit netcat und behalte die Verbindung dann am Leben?

netcat serveraddress myport < MY_FILE 

Die Sache ist, sendet das netcat eine Nachricht die Verbindung zu schließen, sobald die Datei gesendet wird. Ich muss Nachrichten von der Konsole schreiben, nachdem ich diese Datei gesendet habe. Ich erinnere mich, etwas an Pipiline getan zu haben, um zu stdin ... war es das?

netcat serveraddress myport < MY_FILE | 

Das funktioniert jetzt nicht.

Ich bin auf Unix.

Zusätzliche Informationen: Das hat nehmen keine Kontrolle auf Server-Seite (EG netcat auf serverseitige Verwendung für die eingehende Verbindung zu hören)

Antwort

10

Vielleicht dir dabei gedacht:

cat MY_FILE - | ncat ... 

(Beachten Sie, dass ich habe absichtlich netcat falsch geschrieben, weil ich glaube, ncat ein höherwertiges Programm ist)

+0

Vielen Dank, das war es. Ein großes Plus wäre, wenn Sie eine kleine Information darüber hinzufügen können, warum das funktioniert, oder etwas refference. (Was ist das "-"?) – quinestor

+1

Das '-' sagt der Katze, dass sie stdin lesen soll. Es liest zuerst (und schreibt) 'MY_FILE' und liest dann stdin. Wenn stdin ein tty ist, blockiert es einfach bei Eingaben von der Tastatur. –

7

Server-Seite.

nc -k -l 10000 < my_in_file 

Kunde: Hören

echo "bye" | netcat 192.168.1.6 10000 > my_in_file - 
+1

Danke.Dies hat jedoch nicht funktioniert, da die Serverseite nc nicht verwendet, was William vorgeschlagen hat. – quinestor

6

zu halten für andere Verbindungen verwenden -k auf nc.

Angenommen, Sie möchten eine Verbindung zum Server herstellen, den Server in Datei schreiben und auf stdout drucken?

Server: nc -k -l $ PORT | T-Shirt-Datei (oder> Datei ohne Druck auf die Standardausgabe)

Kunde nc $ IP $ PORT < file_to_send

3

Sie die -q -1 Option von nc verwenden können:

echo MY_FILE | nc -q -1 192.168.0.1 9000 

diese Weise ist es funktioniert auch, wenn der Befehl im Hintergrund ausgeführt wird.

1

Ich weiß, das Gewinde sehr alt ist, aber und das OP verwendet Unix, als Referenz hier ist ein Windows-Äquivalent zu "cat FILE - | ncat HOST":

type FILE con | ncat HOST 

Geben Sie dann STRG + Z oder CTRL- C, um die Verbindung zu beenden.

Hinweise

Verwandte Themen