ライブラリ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 でコマンド シェルを実行するより良い方法はありますか?
前もって感謝します !