我有一个要求,我需要打开一个 SftpChannel
用于文件传输和一个 exec channel
以在远程系统上执行命令。那么,我可以打开这些 channel 使用单个 jsch
对象和单个 session
对象。如果可以,请给我一个小代码片段,或者建议我是否有其他方法可以做到这一点?
最佳答案
您可以在单个 session 中打开多个 channel 。
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();
在上面的代码片段中,您会将所有系统输入发送到两个 channel ,您可能不想这样做,因此您必须为一个或两个 channel 创建一个唯一的流。
此外,您可以打开一个 channel ,使用它,关闭它,然后打开一个新 channel ,所有这些都在同一个 session 中。
Jsch 不会自动关闭您的 session 。您必须明确关闭它们。参见 this answer有关关闭 channel 和 session 的说明。
关于java - 我可以使用一个 Jsch 对象打开多个 channel 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24138509/