我是SSH和JSch的新手.当我从客户端连接到服务器时,我想做两个任务:
ChannelSFTP)目前我使用两个单独的shell登录来执行每个任务(实际上我还没有开始编程MySQL查询).
对于上传,相关代码是
session.connect();
Channel channel=session.openChannel("sftp");
channel.connect();
ChannelSftp c=(ChannelSftp)channel;
c.put(source, destination);
Run Code Online (Sandbox Code Playgroud)
而对于我的命令
String command = "ls -l";//just an example
Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand(command);
Run Code Online (Sandbox Code Playgroud)
我应该在第一个频道之后断开会话,然后打开第二个频道吗?或者完全关闭会话并开启新会话?正如我所说,我是新手.
一个SSH会话可以支持任意数量的通道 - 并行和顺序通道.(通道标识符大小有一些理论限制,但在实践中你不会遇到它.)这对JSch也有效.这节省了重做昂贵的密钥交换操作.
因此,在打开新频道之前,通常无需关闭会话并重新连接.我能想到的唯一原因是,当您需要使用不同凭据登录这两个操作时.
为了保护一些内存,您可能希望在打开exec通道之前关闭SFTP通道.
| 归档时间: |
|
| 查看次数: |
17175 次 |
| 最近记录: |