0

Javaを使用してLinuxシステムにリモートでログインし、そのシステムで「df -h」コマンドを実行したいのですが、現在このコードを使用しています

        String[] cm = {
                       "ssh",
                       "root@192.168.1.10" ,
                       "df -h"

                       };

         try
          {
           Process q=  Runtime.getRuntime().exec(cm);
           q.waitFor();
          }

すべてが正常に機能していますが、問題は、ホスト パスワードを手動で入力するためのポップアップが表示されることです...Java コードを使用してパスワードを自動的に入力するにはどうすればよいですか

4

3 に答える 3

4

私の友人のすべてを落として、素晴らしい jsch を使用してください: http://www.jcraft.com/jsch/

ただし、どうしてもコマンド ライン ツールを使用する場合は、はるかに信頼性が高く、柔軟性があり、同時に明確なApache Commons Execを使用してください。

于 2012-06-29T07:38:59.560 に答える
2

sshたとえば、を介して適切に構成.ssh/configでき、にいくつかの公開鍵を含めることができます.ssh/authorized_keysLinux用のsshチュートリアルや他の多くのWebページ、さらにはいくつかの優れたsshブックなど、いくつかの優れたsshチュートリアルを注意深く読んでください。

コマンドを実行するためにrootである必要はおそらくないことに注意してくださいdf -h。そのため、その目的でリモートでrootになることは避けることをお勧めします。

于 2012-06-29T07:35:43.553 に答える
1

ベスト プラクティスではありませんが、本当に Java を使用して実行したい場合は、これが質問に対する解決策です。

import java.io.InputStream;
import java.io.OutputStream;

public class Test {
  public static void main( String[] args ) throws Exception {
    String[] cm = {
        "ssh",
        "root@192.168.1.10" ,
        "df -h"
    };
    Process p = Runtime.getRuntime().exec( cm );
    InputStream in = p.getInputStream();
    OutputStream out = p.getOutputStream();
    out.write( "password".getBytes() );
  }
}

必要に応じて、入力ストリームから読み取った内容に基づいて、いつパスワードを送信するかを決定できます。

于 2012-06-29T08:18:23.817 に答える