gpt4 book ai didi

java - 如何使用 JSch 执行多个操作

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:06:56 25 4
gpt4 key购买 nike

我是 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);

是否应该在第一个 channel 后断开 session ,然后打开第二个 channel ?或者完全关闭 session 并打开一个新 session ?正如我所说,我是新手。

最佳答案

一个 SSH session 可以支持任意数量的 channel - 并行和顺序。 ( channel 标识符大小在理论上有一些限制,但实际上不会达到。)这对 JSch 也有效。这节省了重做代价高昂的 key 交换操作。

因此,通常无需在打开新 channel 之前关闭 session 并重新连接。我能想到的唯一原因是当您需要为这两个操作使用不同的凭据登录时。

不过,为了保护一些内存,您可能希望在打开 exec channel 之前关闭 SFTP channel 。

关于java - 如何使用 JSch 执行多个操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7419513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com