Bagaimana saya bisa memaksa netcat untuk mengirim input saya segera, bukan hanya pada baris baru?
35
Bagaimana saya bisa memaksa netcat untuk mengirim input saya segera, bukan hanya pada baris baru? Saya ingin menguji parser HTTP secara manual dan memeriksa bagaimana perilakunya ketika garis header tersebar di beberapa paket.
Gunakan tombol "eof" CtrlD,. Ketika ditekan di tengah garis, itu akan memberikan kepada netcat segala sesuatu yang telah diinput pada saat itu.
Buffer sebenarnya dilakukan oleh layer tty dan tidak ditangani ncsama sekali. stty -icanon && nc ...akan menonaktifkan buffering dan memungkinkan ncuntuk melihat data saat dimasukkan ke terminal, pada saat itu akan dikirim segera. (Perhatikan bahwa perintah sttydan ncharus dijalankan bersama, jika tidak, shell itu sendiri kemungkinan akan mengaktifkannya kembali saat menampilkan promptnya.)
+1, tetapi apakah tidak ada opsi untuk membuka netcat dengan cara yang tidak buffering apa pun?
lpapp
5
@FinalContest: Buffering dilakukan oleh layer tty. stty -icanon && nc ...atau stty raw && nc ...akan menonaktifkannya. [Perhatikan bahwa itu harus dijalankan bersama, jika tidak, shell itu sendiri akan mengaktifkannya kembali saat menampilkan prompt.]
grawity
@grawity: luar biasa, yang pertama berfungsi dengan baik, tetapi yang kedua macet ... ctrl-c tidak berfungsi lagi untuk keluar dari sesi, dan saya tidak bisa membuat ctrl-z bekerja juga. Apakah itu diharapkan? Selain itu, harap perbarui jawaban Anda sehingga kami dapat membersihkan komentar.
lpapp
2
@FinalContest: Ya, rawmengubah sejumlah besar opsi tty, salah satunya adalah penanganan kunci "kontrol" khusus di tingkat tty. (Ini benar-benar mode "mentah", karena ia meneruskan semuanya ke program.) Anda dapat menggunakan stty -a -F /dev/pts/XXtty lain untuk melihat parameter saat ini.
grawity
Saya menggunakan stty -icanon -echo && nc ...sebaliknya jika setiap karakter yang saya ketikkan di nc dapat digaungkan dua kali
socat
seperti yang tercantum dalam jawabanJawaban:
Gunakan tombol "eof" CtrlD,. Ketika ditekan di tengah garis, itu akan memberikan kepada netcat segala sesuatu yang telah diinput pada saat itu.
Buffer sebenarnya dilakukan oleh layer tty dan tidak ditangani
nc
sama sekali.stty -icanon && nc ...
akan menonaktifkan buffering dan memungkinkannc
untuk melihat data saat dimasukkan ke terminal, pada saat itu akan dikirim segera. (Perhatikan bahwa perintahstty
dannc
harus dijalankan bersama, jika tidak, shell itu sendiri kemungkinan akan mengaktifkannya kembali saat menampilkan promptnya.)sumber
stty -icanon && nc ...
ataustty raw && nc ...
akan menonaktifkannya. [Perhatikan bahwa itu harus dijalankan bersama, jika tidak, shell itu sendiri akan mengaktifkannya kembali saat menampilkan prompt.]raw
mengubah sejumlah besar opsi tty, salah satunya adalah penanganan kunci "kontrol" khusus di tingkat tty. (Ini benar-benar mode "mentah", karena ia meneruskan semuanya ke program.) Anda dapat menggunakanstty -a -F /dev/pts/XX
tty lain untuk melihat parameter saat ini.stty -icanon -echo && nc ...
sebaliknya jika setiap karakter yang saya ketikkan di nc dapat digaungkan dua kali