0

Java の Runtime.getRuntime.exec("") コマンドに関する短い質問があります。

SSH 経由でゲートウェイ コンピューターへのトンネルを作成しようとしています。

String tunnel = "C:\\Program Files\\PuTTY\\putty.exe -ssh -X -P " + localPort + " " + tempUsername + "@" + localIP
                    + " -pw " + tempPassword + " -L " + tunnelPort + ":" + gatewayName + ":"+gatewayPort;

Runtime.getRuntime().exec(tunnel);

このコードは、コマンド プロンプトが表示されるという煩わしい事実を除けば、適切に機能します。

コードを実行した後、プロンプトを終了しようとしました:

String tunnel = "C:\\Program Files\\PuTTY\\putty.exe -ssh -X -P " + localPort + " " + tempUsername + "@" + localIP
                    + " -pw " + tempPassword + " -L " + tunnelPort + ":" + gatewayName + ":"+gatewayPort;

String cmdCommands [] = {tunnel, "exit"};

Runtime.getRuntime().exec(cmdCommands);

私と同じようにコマンドプロンプトを閉じることは可能ですか、それとももっと良い方法がありますか? (このコードは動作しません)

4

1 に答える 1

1

コメントのように、パテではなく実際のSSHライブラリを直接使用するか、のIOストリームをキャプチャする必要があります。exec

Process p = Runtime.getRuntime().exec(cmdCommands);
InputStream is = p.getInputStream();
OutputStream os = p.getOutputStream();
os.write("exit\n");

プラットフォーム上の理由から、ハードコーディングすることは一般的に悪い考えです\ nが、あなたはその考えを理解します。また、適切なOutputStreamを選択する必要があります。便利なサブクラス(バッファリングなど)がいくつかあります。

于 2012-07-04T15:51:52.817 に答える