SSH 客户端
| Type | Name and description |
|---|---|
static com.jcraft.jsch.Session |
connect(String host, String username, String password, int port = 0, String privateKey = null, String passphrase = null)SSH 连接到主机 |
static int |
handleChannelShell(com.jcraft.jsch.ChannelShell channel, long maxIdle = 300, Closure callback)无限循环获取 ssh shell 输出,并调用回调闭包进行处理。 |
static void |
openSftp(com.jcraft.jsch.Session session, Closure callback)打开一个 sftp,用于文件上传、下载 |
static void |
openSsh(com.jcraft.jsch.Session session, Closure callback)开启一个 ssh shell,并通过流的方式执行命令、获取返回信息 |
static boolean |
sftpDownload(com.jcraft.jsch.ChannelSftp sftp, java.io.OutputStream outputStream, String srcFile)通过 sftp 下载文件 |
static boolean |
sftpFileExists(com.jcraft.jsch.ChannelSftp sftp, String srcFile)通过 sftp 连接,检查文件是否存在(通过 ChannelSftp#ls 方法判断的) |
static void |
sftpUpload(com.jcraft.jsch.ChannelSftp sftp, java.io.InputStream inputStream, String destFile, int mode = ChannelSftp.OVERWRITE)通过 sftp 上传文件 |
static void |
testShell(String host, String username, String password) |
| Methods inherited from class | Name |
|---|---|
class Object |
Object#wait(long, int), Object#wait(long), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
SSH 连接到主机
host - 主机地址username - 用户名password - 密码port - 端口,默认为 22privateKey - 密钥文件路径(通常是 ~/.ssh/id_xxx)passphrase - 密钥文件的密码无限循环获取 ssh shell 输出,并调用回调闭包进行处理。
maxIdle - 最长闲置期,超时后自动断开。单位为秒,默认为 300 即 5 分钟。callback - 可接收参数 byte[] data, int len 的回调闭包打开一个 sftp,用于文件上传、下载
闭包执行结束后,会自动断开 session 中的连接。
session - 方法 connect 返回的 session 对象callback - 接收参数 ChannelSftp sftp 的回调闭包,可以调用 cd、ls 等自带 api,或工具类中的 sftpUpload、sftpDownload 等方法。开启一个 ssh shell,并通过流的方式执行命令、获取返回信息
闭包中,最后务必执行命令 exit 以断开连接,并且可以通过 handleChannelShell 来处理输出。
闭包执行结束后,会自动断开 session 中的连接。
session - 方法 connect 返回的 session 对象callback - 接收参数 ChannelShell channel 的回调闭包通过 sftp 下载文件
如果文件不存在,会抛出异常;因此,如有必要,可以先调用 sftpFileExists 检查文件是否存在。
sftp - 方法 openSftp 获得的 sftp 对象outputStream - 输出流,如 FileOutputStreamsrcFile - 要下载的文件路径,如果以 / 开头,则为全路径,否则为相对当前文件夹(pwd)的文件路径通过 sftp 连接,检查文件是否存在(通过 ChannelSftp#ls 方法判断的)
通过 sftp 上传文件
sftp - 方法 openSftp 获得的 sftp 对象inputStream - 输入流,如 FileInputStreamdestFile - 目标文件路径,如果以 / 开头,则为全路径,否则为相对当前文件夹(pwd)的文件路径mode - 目标文件已存在的处理方式:默认为覆盖 ChannelSftp.OVERWRITE,此外还有 ChannelSftp.RESUME、ChannelSftp.APPEND。