如何使用JSch执行多项操作

我是SSH和JSch的新手。当我从客户端连接到服务器时,我想做两个任务:

  1. 上传文件(使用ChannelSFTP
  2. 执行命令,例如创建目录,以及搜索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

回到顶部