私は Jsch を使用して sshd サーバーに接続していますが、この分野では初めてです。a、b ...などの非制御文字を正常に送信しました。ただし、特定のタスクを実行するには、「Esc」キー コマンド (制御文字) を送信する必要があります。リンクによると、いくつかの方法 (「27」、「0033」、「0x1b」、「^[」を渡す) を試しましたが、うまくいきませんでした。sshj を使用するためのリンクを見つけました。Jschを使用して制御文字を送信する方法はありますか?
ありがとうMFH
次のスニペットはどうですか?
byte[] esc = { (byte)0x1b };
out.write(esc);
out.flush();
JSchを利用しているJCTermには以下の定義があり、
byte[] ENTER = {(byte)0x0d};
byte[] UP = {(byte)0x1b, (byte)0x4f, (byte)0x41};
byte[] DOWN = {(byte)0x1b, (byte)0x4f, (byte)0x42};
byte[] RIGHT = {(byte)0x1b, (byte)0x4f, (byte)0x43};
byte[] LEFT = {(byte)0x1b, (byte)0x4f, (byte)0x44};
....
ありがとう。私はこの問題を少し異なる方法で理解しました。特定のタスクを実行するために JSCH を使用して文字を VT100 端末に送信しています。コードでは、すべての入力がバイト配列に変換されますが、ASCII 制御文字をバイト配列として VT100 端末に送信することはできません。投稿によると、制御文字を ASCII コード (INT) として送信する必要があります。たとえば、VT100 端末で ESC コマンドが必要な場合は、SSH セッションの入力ストリームに 27 (INT) を書き込む必要があります。ESC の ASCII コードは 27 です (以前は 27 を文字列として送信し、バイトの配列に変換していました)。