我尝试使用库JSch - Java Secure Channel在我的 Android 应用程序中建立 ssh 连接,它可以工作。
现在我想执行一个命令并检索结果。
我尝试了几种效果最好的方法是这样的。但是,此方法仅部分有效,因为由于某种原因我无法解释,我的程序在我的 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 运行命令表吗?
先感谢您 !