2

私は Jsch を使用して sshd サーバーに接続していますが、この分野では初めてです。a、b ...などの非制御文字を正常に送信しました。ただし、特定のタスクを実行するには、「Esc」キー コマンド (制御文字) を送信する必要があります。リンクによると、いくつかの方法 (「27」、「0033」、「0x1b」、「^[」を渡す) を試しましたが、うまくいきませんでした。sshj を使用するためのリンクを見つけました。Jschを使用して制御文字を送信する方法はありますか?

ありがとうMFH

4

2 に答える 2

2

次のスニペットはどうですか?

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};
....
于 2012-04-17T00:43:18.970 に答える
1

ありがとう。私はこの問題を少し異なる方法で理解しました。特定のタスクを実行するために JSCH を使用して文字を VT100 端末に送信しています。コードでは、すべての入力がバイト配列に変換されますが、ASCII 制御文字をバイト配列として VT100 端末に送信することはできません。投稿によると、制御文字を ASCII コード (INT) として送信する必要があります。たとえば、VT100 端末で ESC コマンドが必要な場合は、SSH セッションの入力ストリームに 27 (INT) を書き込む必要があります。ESC の ASCII コードは 27 です (以前は 27 を文字列として送信し、バイトの配列に変換していました)。

于 2012-04-18T20:59:45.617 に答える