改行だけでなく、netcatに入力をすぐに送信させるにはどうすればよいですか?


35

改行だけでなく、netcatに入力をすぐに送信させるにはどうすればよいですか?HTTPパーサーを手動でテストし、ヘッダー行が複数のパケットに分散している場合の動作を確認したい。


2

回答:


42

「eof」キーを使用しますCtrlD。行の途中で押されると、その時点で入力されたすべてをnetcatに提供します。

バッファリングは実際にはttyレイヤーによって行われ、まったく処理さncれません。stty -icanon && nc ...バッファリングを無効ncにし、端末に入力されたデータを表示できるようにします。この時点で、データはすぐに送信されます。(コマンドsttyncコマンドは一緒に実行する必要があることに注意してください。そうしないと、プロンプトを表示するときにシェル自体が再度有効にする可能性があります。)


+1ですが、何もバッファリングしないようにnetcatを開くオプションはありませんか?
lpapp 14年

5
@FinalContest:バッファリングはttyレイヤーによって行われます。stty -icanon && nc ...またはstty raw && nc ...無効にします。[一緒に実行する必要があることに注意してください。そうしないと、プロンプトを表示するときにシェル自体が再度
有効にし

@grawity:素晴らしい、前者はうまく動作しますが、後者は動けなくなります... ctrl-cはセッションを終了するためにもう機能せず、ctrl-zも動作しません。それは期待されていますか?また、コメントを整理できるように回答を更新してください。
lpapp

2
@FinalContest:ええ、rawttyオプション全体を変更します。それらの1つは、ttyレベルでの特別な「コントロール」キーの処理です。(これは、すべてをプログラムに渡すという点で、実際には「生」モードです。)stty -a -F /dev/pts/XX別のttyから使用して、現在のパラメーターを確認できます。
-grawity

stty -icanon -echo && nc ...そうしないと、ncで入力したすべての文字が2回エコーされます
Gelin Luo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.