BusyBox 1.1.3に付属のNetcatを使用してHTTPリクエストを作成し、応答を受信する際に問題が発生します。 NCコマンドは、送信しているリクエストファイルの最後に到達するとすぐに終了するようです。 -wオプションはこの場合のために設計されているようですが、ソースコードを見ると、-wオプションが受信動作に影響を与える可能性はないようです。
BusyBoxのこのバージョンNCのソースコードはこちらです...
http://git.busybox.net/busybox/tree/networking/nc.c?id=5cbe2519d8776bc15e0bc4dc7aeb6adc53e50b81
私は何が間違っているのですか?このバージョンのNCを介してサーバーにファイルを送信し、応答を受信するのを待つ方法はありますか?スクリプトでこれを行う他の可能な方法についての創造的なアイデアはありますか?
これは組み込みシステムであり、BusyBoxバージョンをアップグレードしたり、新しい実行可能ファイルをアップロードしたりすることはできません。使用できるのは、スクリプトファイルとすでに利用可能なBusyBox実行可能ファイルのみです。また、システムで利用可能なWGETがないことにも注意してください。
ありがとう!
-ジョシュ
これを試して:
(echo "GET / HTTP/1.0"; sleep 1) | nc Host 80
Ncについて混乱していないと思いますか? BusyBoxのマニュアルページ の状態:
nc
nc [OPTIONS] Host PORT - connect nc [OPTIONS] -l -p PORT [Host] [PORT] - listen
Options:
-e PROG Run PROG after connect (must be last)
-l Listen mode, for inbound connects
-n Don't do DNS resolution
-s ADDR Local address
-p PORT Local port
-u UDP mode
-v Verbose
-w SEC Timeout for connects and final net reads
-i SEC Delay interval for lines sent
-o FILE Hex dump traffic
-z Zero-I/O mode (scanning)
したがって、ポートでlistenするオプションは(従来の)-lであり、 -wは、接続と最終的なネット読み取りのタイムアウトです。
接続が閉じられた後もリッスンし続けることが問題である場合は、永遠のループwhile true nc -l ...を使用できます。
編集:
メッセージを読んだ後、OPが何を求めているのか理解できなかったことがわかりました。私が理解しなかった理由は、ncインスタンスを両方の送信と受信。別のポートと、そのためのncの別のインスタンスが必要です。同じポートで受信できない場合、ncのtransmitインスタンスを開いたままにしておくことに意味はありません。