0

JSCH を使用して SSH 経由でホストにアクセスし、いくつかのコマンドを起動しています。

ホストは BNG であるため、「一般的な」OS を使用していません: http://en.wikipedia.org/wiki/Border_Network_Gateway

[local]MYBNG#orのような有用な情報があるため、プロンプトを取得する必要があり 、プロンプト内にor[not_local]MYBNG#があるかどうかを知るロジックを適用する必要があります。localnot_local

起動したばかりのコマンドの出力しか表示されないため、InputStreamから を取得しても機能しません...ExecChannel

4

2 に答える 2

1

JSCH の例のページには、SSH サーバーにログインしてシェル プロンプトを取得する例があります。

例はこちらです。

これを行うコードは、具体的には次のとおりです。

Channel channel=session.openChannel("shell");
channel.setOutputStream(System.out);

例には、特定の端末エミュレーションに関するコメントが含まれています。これは、BNG によっては必要になる場合があります。

于 2013-01-16T15:50:32.780 に答える
0

Enterキーを押すだけです:

outputStream.write("\n");
outputStream.flush();

出力を読み取ります。

String res = "";
byte array[];
int num;
do {
    if ((num = inputStream.available()) > 0) {
        array = new byte[num];
        num = inputStream.read(array);
        String ret = new String(array, 0, num);
        res += ret;

        if (inputStream.available() == 0)
            break;                      
    }
} while (true);

いくつかのプロンプトが含​​まれているかどうかを確認します。

res.toString().contains("[local]MYBNG#");
于 2013-01-16T15:53:36.700 に答える