我尝试使用库JSch - Java Secure Channel在我的Android应用程序中建立ssh连接,它可以工作。
现在我想执行一个命令并检索结果。
我尝试了几种方法,最好的是这个。然而,这个方法只部分有效,因为由于某种我无法解释的原因,我的程序在while循环结束时停止运行,但是我却在日志中看到了命令的结果。
以下是我的代码:
现在我想执行一个命令并检索结果。
我尝试了几种方法,最好的是这个。然而,这个方法只部分有效,因为由于某种我无法解释的原因,我的程序在while循环结束时停止运行,但是我却在日志中看到了命令的结果。
以下是我的代码:
public static String executeRemoteCommand(String username, String password, String hostname, int port) throws Exception {
JSch jsch = new JSch();
Session session = jsch.getSession(username, hostname, port);
session.setPassword(password);
// Avoid asking for key confirmation
Properties prop = new Properties();
prop.put("StrictHostKeyChecking", "no");
session.setConfig(prop);
session.connect();
Channel channel = session.openChannel("shell");
channel.connect();
DataInputStream dataIn = new DataInputStream(channel.getInputStream());
DataOutputStream dataOut = new DataOutputStream(channel.getOutputStream());
// send ls command to the server
dataOut.writeBytes("ls\r\n");
dataOut.flush();
// and print the response
String line = dataIn.readLine();
String result = line + "\n";
while ((line = dataIn.readLine()) != null) {
result += line + "\n";
Log.i("TAG", "Line: "+line);
}
dataIn.close();
dataOut.close();
channel.disconnect();
session.disconnect();
return result;
}
还有其他人有更好的方法来使用JSch运行命令吗?
提前感谢!