通过session.requestDumbPTY()和session.startShell()来模拟命令行,在通过io流操作
try {
session = conn.openSession();
session.requestDumbPTY();
session.startShell();
stdout = session.getStdout();
stderr = session.getStderr();
stdin = session.getStdin();
} catch (IOException e) {
e.printStackTrace();
}
io流操作
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(stdin));
bw.write(command + "\n\r");
bw.flush();
while (true) {
if ((stdout.available() == 0) && (stderr.available() == 0)) {
int conditions = session.waitForCondition(ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA
| ChannelCondition.EOF, 2000);
if ((conditions & ChannelCondition.EOF) != 0) {
if ((conditions & (ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA)) == 0) {
break;
}
}
}
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
while (true) {
String answer = br.readLine();
if (answer != null) {
Log.i("socket", "message call: " + answer);
} else {
break;
}
}
BufferedReader brErr = new BufferedReader(new InputStreamReader(stderr));
while (true) {
String answer = brErr.readLine();
if (answer != null) {
Log.i("socket", "execute: answer error = " + answer);
} else {
break;
}
}
}
取消
评论