Channel channel = session.openChannel("exec");
时间: 2023-05-16 07:04:31 浏览: 87
这是一个关于Java SSH连接的问题,您可以通过使用JSch库来打开一个exec通道,然后在该通道上执行命令。以下是一个示例代码片段:
JSch jsch = new JSch();
Session session = jsch.getSession("username", "hostname", 22);
session.setPassword("password");
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand("ls -l");
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
channel.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 (channel.isClosed()) {
if (in.available() > 0) continue;
System.out.println("exit-status: " + channel.getExitStatus());
break;
}
try {
Thread.sleep(1000);
} catch (Exception ee) {
}
}
channel.disconnect();
session.disconnect();
这段代码可以连接到一个SSH服务器,然后执行"ls -l"命令,并将结果输出到控制台。