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例如 thru .ssh/config,并且您可以在.ssh/authorized_keys. 仔细阅读一些好的 ssh 教程,例如Linux 的 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 回答