通过java做ssh

时间:2013-02-13 16:19:43

标签: java linux ssh

我想通过java代码执行此命令 ssh abc @ ubuntu

我正在使用此代码,但它不能完全运行,它不会登录到服务器。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class JavaApplication4 {

/**
 * @param args the command line arguments
 */
    public static void main(String[] args) throws IOException, InterruptedException {
    // TODO code application logic here
    ProcessBuilder pb = new ProcessBuilder("ssh","usmanmahmood@ubuntu");
//pb.redirectErrorStream(); //redirect stderr to stdout 
Process process = pb.start();
InputStream inputStream = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
while((line = reader.readLine())!= null) {
    System.out.println(line);
}

    int waitFor = process.waitFor();

   } 


   } 

请告诉我错误,

2 个答案:

答案 0 :(得分:2)

您可能正在从Windows机器上运行它?除非你专门添加了ssh,否则ssh不是windows的有效命令。大多数人会建议使用JSCH http://www.jcraft.com/jsch/examples/Shell.java.html

答案 1 :(得分:1)

问题是您正在等待null中的Reader行,但您永远不会从打开的SSH会话中获取该行。

在您的情况下,ssh正在远程服务器的命令提示符处等待您,您正在等待ssh

尝试将要运行的命令添加到传递给ssh的选项中。它只会登录运行它。

或许更相关的问题是,你为什么要用Java做这个?为什么不写一个shell脚本?