Wie kann ich netcat zwingen, meine Eingaben sofort zu senden, nicht nur in Newlines?

35

Wie kann ich netcat zwingen, meine Eingaben sofort zu senden, nicht nur in Newlines? Ich möchte einen HTTP-Parser manuell testen und überprüfen, wie er sich verhält, wenn die Headerzeilen auf mehrere Pakete verteilt sind.

thejh
quelle
2
Versuchen Sie, socatwie in dieser Antwort aufgeführt
Jeremy W

Antworten:

42

Verwenden Sie die Taste "eof" CtrlD. Wenn Sie in die Mitte einer Zeile drücken, erhält netcat alles, was zu diesem Zeitpunkt eingegeben wurde.

Das Puffern wird tatsächlich von der tty-Schicht durchgeführt und von ncüberhaupt nicht gehandhabt . stty -icanon && nc ...würde die Pufferung deaktivieren und ermöglichen nc, die Daten zu sehen, wie sie in das Terminal eingegeben werden, und an welchem ​​Punkt sie sofort gesendet werden. (Beachten Sie, dass die Befehle sttyund zusammen ausgeführt ncwerden müssen, sonst würde die Shell sie wahrscheinlich wieder aktivieren, wenn ihre Eingabeaufforderung angezeigt wird.)

Grawity
quelle
+1, aber gibt es keine Möglichkeit, netcat so zu öffnen, dass es nichts puffert?
lpapp
5
@FinalContest: Die Pufferung erfolgt durch die tty-Ebene. stty -icanon && nc ...oder stty raw && nc ...würde es deaktivieren. [Beachten Sie, dass es zusammen ausgeführt werden muss, andernfalls würde die Shell es wieder aktivieren, wenn die Eingabeaufforderung angezeigt wird.]
Grawity
@grawity: Super, ersteres funktioniert einwandfrei, letzteres bleibt jedoch hängen ... Strg-C funktioniert nicht mehr, um die Sitzung zu beenden, und ich kann auch Strg-Z nicht dazu bringen, daran zu arbeiten. Wird das erwartet Bitte aktualisieren Sie auch Ihre Antwort, damit wir die Kommentare bereinigen können.
lpapp
2
@FinalContest: Ja, rawändert eine ganze Reihe von tty-Optionen, eine davon ist der Umgang mit speziellen "Kontroll" -Tasten auf tty-Ebene. (Es ist wirklich ein "Raw" -Modus, in dem alles an das Programm übergeben wird.) Sie können stty -a -F /dev/pts/XXvon einem anderen Tty aus die aktuellen Parameter anzeigen.
Grawity
Ich benutze stty -icanon -echo && nc ...sonst jeden Buchstaben, den ich eingetippt habe. Ich bekomme zweimal ein Echo
Gelin Luo