// 设置执行的命令
channelExec.setCommand(remoteCommand);
// 获取执行结果
java.io.InputStream in = channelExec.getInputStream();
// 连接
channelExec.connect();
// 读取执行结果
byte[] tmp = new byte[1024];
while (true) {
while (in.available() > 0) {
int i = in.read(tmp, 0, 1024);
if (i < 0) break;
System.out.print(new String(tmp, 0, i));
}
if (channelExec.isClosed()) {
if (in.available() > 0) continue;
System.out.println("Exit status: " + channelExec.getExitStatus());
break;
}
try {
Thread.sleep(1000);
} catch (Exception ee) {
// Ignore
}
}
这段代码的主要目的是:
-
设置执行的命令:
channelExec.setCommand(remoteCommand);
这一行设置要在远程机器上执行的命令,它的值是你希望在远程机器上执行的 shell 命令。 -
获取执行结果:
java.io.InputStream in = channelExec.getInputStream();
这一行创建一个输入流,用于读取远程命令的执行结果。 -
连接:
channelExec.connect();
这一行连接到远程机器。 -
读取执行结果: 接下来的部分是一个循环,用于读取远程命令的执行结果。它通过
in.read(tmp, 0, 1024)
读取数据,并将其打印出来。循环继续进行,直到远程命令执行完毕。 -
等待命令执行完毕: 最后,通过
channelExec.isClosed()
和channelExec.getExitStatus()
来判断远程命令是否执行完毕。一旦命令执行完毕,就会打印退出状态。
在你的实际情况中,remoteCommand
是你希望在远程机器上执行的命令,可以根据你的需求更改这个命令。