我有一个要求,我需要打开一个SftpChannel
进行文件传输,一个exec channel
执行远程系统上的命令。所以,我可以使用单个{{{{{{{ 1}}对象和单个jsch
对象。如果我可以请给我一个小代码片段,或者请建议我有没有其他方法可以做到这一点?
答案 0 :(得分:1)
你可以在一个会话中拥有多个开放频道。
Channel chExec = session.openChannel("exec");
Channel chSFTP = session.openChannel("sftp");
chExec.setInputStream(System.in);
chExec.setOutputStream(System.out);
chSFTP.setInputStream(System.in);
chSFTP.setOutputStream(System.out);
chExec.connect();
chSFTP.connect();
在上面的代码片段中,您将所有系统输入发送到两个频道,您可能不想这样做,因此您必须为一个或两个频道创建一个唯一的流。
此外,你可以在同一个会话中打开一个频道,使用它,关闭它,然后打开一个新频道。
Jsch不会自动关闭您的会话。您必须明确关闭它们。有关关闭频道和会话的说明,请参阅this answer。