From a947d2171ee832db20b1b38366ae40ae5d32ded8 Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 13 Jun 2022 11:29:26 +0800 Subject: [PATCH] add methodsa --- .../java/cn/hutool/extra/ssh/JschUtil.java | 23 ++++++++++ .../main/java/cn/hutool/extra/ssh/Sftp.java | 43 ++++++++++++++++++- 2 files changed, 64 insertions(+), 2 deletions(-) diff --git a/hutool-extra/src/main/java/cn/hutool/extra/ssh/JschUtil.java b/hutool-extra/src/main/java/cn/hutool/extra/ssh/JschUtil.java index a76e649b2..d053c0b2a 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/ssh/JschUtil.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/ssh/JschUtil.java @@ -96,6 +96,7 @@ public class JschUtil { public static Session openSession(final String sshHost, final int sshPort, final String sshUser, final String sshPass, final int timeout) { final Session session = createSession(sshHost, sshPort, sshUser, sshPass); try { + session.setTimeout(timeout); session.connect(timeout); } catch (final JSchException e) { throw new JschRuntimeException(e); @@ -123,6 +124,28 @@ public class JschUtil { return session; } + /** + * 打开一个新的SSH会话 + * + * @param sshHost 主机 + * @param sshPort 端口 + * @param sshUser 用户名 + * @param privateKeyPath 私钥的路径 + * @param passphrase 私钥文件的密码,可以为null + * @param timeout 超时时间,单位毫秒 + * @return SSH会话 + */ + public static Session openSession(final String sshHost, final int sshPort, final String sshUser, final String privateKeyPath, final byte[] passphrase, final int timeout) { + final Session session = createSession(sshHost, sshPort, sshUser, privateKeyPath, passphrase); + try { + session.setTimeout(timeout); + session.connect(timeout); + } catch (final JSchException e) { + throw new JschRuntimeException(e); + } + return session; + } + /** * 新建一个新的SSH会话,此方法并不打开会话(既不调用connect方法) * diff --git a/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java b/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java index 6e6ae1ffc..a510ecf8a 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java @@ -31,7 +31,7 @@ import java.util.Vector; * *

* 此类为基于jsch的SFTP实现
- * 参考:https://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html + * 参考:https://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html *

* * @author looly @@ -77,8 +77,21 @@ public class Sftp extends AbstractFtp { * @since 5.3.3 */ public Sftp(final FtpConfig config) { + this(config, true); + } + + /** + * 构造 + * + * @param config FTP配置 + * @param init 是否立即初始化 + * @since 5.8.4 + */ + public Sftp(final FtpConfig config, final boolean init) { super(config); - init(config); + if (init) { + init(config); + } } /** @@ -112,6 +125,32 @@ public class Sftp extends AbstractFtp { super(FtpConfig.create().setCharset(charset)); init(channel, charset); } + + /** + * 构造 + * + * @param session {@link Session} + * @param charset 编码 + * @param timeOut 超时时间,单位毫秒 + * @since 5.8.4 + */ + public Sftp(final Session session, final Charset charset, final long timeOut) { + super(FtpConfig.create().setCharset(charset).setConnectionTimeout(timeOut)); + init(session, charset); + } + + /** + * 构造 + * + * @param channel {@link ChannelSftp} + * @param charset 编码 + * @param timeOut 超时时间,单位毫秒 + * @since 5.8.4 + */ + public Sftp(final ChannelSftp channel, final Charset charset, final long timeOut) { + super(FtpConfig.create().setCharset(charset).setConnectionTimeout(timeOut)); + init(channel, charset); + } // ---------------------------------------------------------------------------------------- Constructor end /**