如何使用JSch执行多项操作
我是SSH和JSch的新手。当我从客户端连接到服务器时,我想做两个任务:
- 上传文件(使用
ChannelSFTP
) - 执行命令,例如创建目录,以及搜索MySQL数据库
目前,我正在使用两个单独的Shell登录名来执行每个任务(实际上我还没有开始对MySQL查询进行编程)。
对于上传,相关代码为
session.connect();Channel channel=session.openChannel("sftp");
channel.connect();
ChannelSftp c=(ChannelSftp)channel;
c.put(source, destination);
而对于我的命令
String command = "ls -l";//just an example Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand(command);
我应该在第一个频道之后断开会话,然后再打开第二个频道吗?还是完全关闭会话并打开一个新会话?如我所说,我是新手。
回答:
一个SSH会话可以支持任意数量的通道-
并行和顺序。(通道标识符的大小在理论上有一定的限制,但实际上您不会遇到。)这对于JSch也有效。这样可以节省重做昂贵的密钥交换操作。
因此,通常不需要在打开新通道之前关闭会话并重新连接。我能想到的唯一原因是,当您需要使用两种操作的不同凭据登录时。
为了保护一些内存,您可能需要在打开exec通道之前关闭SFTP通道。
以上是 如何使用JSch执行多项操作 的全部内容, 来源链接: utcz.com/qa/420667.html