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.
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.)
+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
socat
wie in dieser Antwort aufgeführtAntworten:
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öglichennc
, die Daten zu sehen, wie sie in das Terminal eingegeben werden, und an welchem Punkt sie sofort gesendet werden. (Beachten Sie, dass die Befehlestty
und zusammen ausgeführtnc
werden müssen, sonst würde die Shell sie wahrscheinlich wieder aktivieren, wenn ihre Eingabeaufforderung angezeigt wird.)quelle
stty -icanon && nc ...
oderstty 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.]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önnenstty -a -F /dev/pts/XX
von einem anderen Tty aus die aktuellen Parameter anzeigen.stty -icanon -echo && nc ...
sonst jeden Buchstaben, den ich eingetippt habe. Ich bekomme zweimal ein Echo