1

我想通过一个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();

   } 


   } 

请告诉我错误,

4

2 回答 2

2

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

于 2013-02-13T16:23:38.507 回答
1

问题是您正在等待null来自Reader.

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

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

一个可能更相关的问题是,你为什么要在 Java 中这样做?为什么不写一个shell脚本呢?

于 2013-02-13T19:31:45.580 回答