无法使用 jsch 运行 top 命令
Unable to run top command using jsch
我无法使用 JSch 运行 top 命令。请看以下代码:
Session session = null;
ChannelShell channel = null;
PipedInputStream pipeIn = null;
PipedOutputStream pipeOut = null;
String response = "";
try {
session = getSession(hostIp, userName, password);
channel = (ChannelShell)session.openChannel( "shell" );
pipeIn = new PipedInputStream();
pipeOut = new PipedOutputStream( pipeIn );
channel.setInputStream(pipeIn);
channel.setOutputStream(System.out, true);
channel.connect(3*1000);
pipeOut.write(command.getBytes());
Thread.sleep(3*1000);
} catch (Exception e) {
throw e;
} finally {
if (pipeIn != null) pipeIn.close();
if (pipeOut != null) pipeOut.close();
closeResources(session, channel);
}
由于 top 是一个交互式命令,所以我使用了 ChannelShell。上面的代码显示了 top 命令的输出,但没有显示任何响应。
您没有显示分配给 command
变量的值,但是当我将 "top\n"
分配给它然后 运行 您的代码时,我可以看到输出。您是否可能在命令后错过了换行符?您可能还必须在写入后刷新 pipeOut
流,尽管在我的测试中这不是必需的。
我无法使用 JSch 运行 top 命令。请看以下代码:
Session session = null;
ChannelShell channel = null;
PipedInputStream pipeIn = null;
PipedOutputStream pipeOut = null;
String response = "";
try {
session = getSession(hostIp, userName, password);
channel = (ChannelShell)session.openChannel( "shell" );
pipeIn = new PipedInputStream();
pipeOut = new PipedOutputStream( pipeIn );
channel.setInputStream(pipeIn);
channel.setOutputStream(System.out, true);
channel.connect(3*1000);
pipeOut.write(command.getBytes());
Thread.sleep(3*1000);
} catch (Exception e) {
throw e;
} finally {
if (pipeIn != null) pipeIn.close();
if (pipeOut != null) pipeOut.close();
closeResources(session, channel);
}
由于 top 是一个交互式命令,所以我使用了 ChannelShell。上面的代码显示了 top 命令的输出,但没有显示任何响应。
您没有显示分配给 command
变量的值,但是当我将 "top\n"
分配给它然后 运行 您的代码时,我可以看到输出。您是否可能在命令后错过了换行符?您可能还必须在写入后刷新 pipeOut
流,尽管在我的测试中这不是必需的。