Як я можу змусити netcat відправити мій вхід негайно, а не тільки на нові рядки?


29

Як я можу змусити netcat відправити мій вхід негайно, а не тільки на нові рядки? Я хочу перевірити парсер HTTP вручну і перевірити, як він поводиться, коли рядки заголовка поширюються на декілька пакетів.


2
спробуйте socat як зазначено в цьому відповідь
Jeremy W

Відповіді:


35

Використовуйте клавішу "eof", Ctrl D . При натисканні в середині рядка, це дасть netcat все, що було введено в цей момент.

Буферизація фактично виконується шаром tty і не обробляється nc зовсім. stty -icanon && nc ... буде вимикати буферизацію і дозволяти nc щоб побачити дані під час введення в термінал, після чого він буде відправлений відразу. (Зауважте, що stty і nc команди повинні бути запущені разом, інакше сама оболонка, швидше за все, буде увімкнена, коли відображатиметься його підказка.)


+1, але чи немає опції для відкриття netcat так, щоб він нічого не буферизував?
lpapp

5
@FinalContest: Буферування здійснюється шаром tty. stty -icanon && nc ... або stty raw && nc ... відключить його. [Зауважте, що вона повинна бути запущена разом, інакше сама оболонка буде вмикати її під час відображення підказки.]
grawity

@grawity: дивовижний, перший працює нормально, але останній застряє ... ctrl-c більше не працює, щоб вийти з сесії, і я не можу змусити ctrl-z працювати над ним. Це очікується? Також, будь ласка, оновіть свою відповідь, щоб ми могли очистити коментарі.
lpapp

2
@FinalContest: Так, raw змінює цілу групу опцій tty, однією з яких є обробка спеціальних "контрольних" клавіш на рівні tty. (Це дійсно "сирий" режим, в якому він проходить все до програми.) Можна використовувати stty -a -F /dev/pts/XX з іншого tty, щоб побачити поточні параметри.
grawity
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.