私は複数のマシンでやっているいくつかのタスクを自動化したいと思います。この作業にGanymedのSSH2ライブラリを使用したいと思います。私はすでに複数のコマンドを実行して、サーバからの応答を得ることができます。事はあなたが唯一の私は、メソッドを実行する理由はセッションごとに1つのコマンドを実行することができるということです、私は複数のコマンドのための一つの方法を使用することを可能にするために、次のようになりますことは、私はにできないように見えるということですガニッシュSSH - ユーザーの変更
public String execCmd(String cmd) throws IOException {
sess = conn.openSession();
sess.execCommand(cmd);
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
String result = br.readLine();
br.close();
sess.close();
return (result);
}
"su" +ユーザー名を使ってユーザーを変更してください。私は "su"コマンドがこの問題の結果として新しいシェルを開くことを読んでいます。
今、これを解決する最もクリーンな方法は何ですか?私はこのライブラリを使ってシェルを開く可能性について読んだが、書き込むことができず、その例を見つけることができなかったようだ。
ありがとうございます。
複数のコマンドを実行する場合。疑似端末を要求してシェルを起動する必要があります。コマンドはSession.requestPTY()とSession.startShell()です。 –
@ Mr.Stefと私はこのシェルにどのように書き込もうとしていますか?セッションを使用して私はコマンドを実行するオプションがありましたが、これは私が思うシェルにとっては当てはまりません –
あなたはアウトストリームを取得する必要があります。 outstream = this.session.getStdin()を呼び出すと、Writerを使用できます。最後のBufferedWriter bufferedWriter = new BufferedWriter(新しいOutputStreamWriter(this.outputStream)); –