$ nc example.com 80
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
...
Es funktioniert, der Zeilentrenner steht einfach 0A
hier statt „erforderlich“ 0D0A
.
Wie gebe ich eine 0D0A
durch - getrennte Abfrage in Netcat ein?
Es ist einfach, eine einmalige Sache zu erledigen, indem man sie jedes Mal printf
manuell eintippt \r\n
, oder einen Perl-ähnlichen Oneliner zu implementieren todos
und ihn an weiterzuleiten nc
, aber vielleicht gibt es einen einfacheren Weg, den ich übersehen habe?
Antwort1
Meins netcat
hat eine Option -C
zum --crlf
Ersetzen \n
durch \r\n
auf stdin.
Alternativ hängt es davon ab, welches Terminal Sie verwenden. Meine Standardeinstellungen können hier eingesehen werden:
$ stty -a
... lnext = ^V; ...
Dies zeigt diewörtlich-weiterDas Zeichen für die Eingabe ist control-V. Wenn Sie also control-vgefolgt von eingeben control-m, wird ein Wagenrücklauf eingefügt (im Gegensatz zu einem Zeilenumbruch, den Sie erhalten, wenn Sie die Taste return
oder drücken enter
).
Antwort2
Sie können eine Zeichenfolge per Pipeline an Folgendes weiterleiten nc
:
echo -ne 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' | nc example.com 80
Prüfen Sie mit:
$ echo -ne 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' | hd
00000000 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a |GET / HTTP/1.1..|
00000010 48 6f 73 74 3a 20 65 78 61 6d 70 6c 65 2e 63 6f |Host: example.co|
00000020 6d 0d 0a 0d 0a |m....|
00000025
Antwort3
Sie können im ungepufferten Modus ( ) eine Pipe sed
an senden , um von Ihrer Standardeingabe in Folgendes zu konvertieren :nc
-u
\n
\r\n
sed -u 's/$/\r/g' | nc localhost 6379
Sie können es auch unix2dos
mit verwenden stdbuf
:
stdbuf -i0 -o0 -e0 unix2dos | nc localhost 6379