我想通过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();
}
}
请告诉我错误,
答案 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脚本?