Jsch远程执行shell脚本命令
2022-11-01 13:10:00 【

JSch是Java Secure Channel的缩写。JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序。框架jsch很老的框架,更新到2016年,现在也不更新了。


Jsch 使用shell执行命令,有两种方法:


ChannelExec channelExec = (ChannelExec) session.openChannel("exec");//只能执行一条指令(也可执行符合指令)


ChannelShell channelShell = (ChannelShell) session.openChannel("shell");//可执行多条指令 不过需要输入输出流

1.

2.

3.

ChannelExec

对于ChannelExec,在调用connect()方法之前这个命令提供了setCommand()方法,并且这些命令作为输入将以输入流的形式被发送出去。(通常,你只能有调用setCommand()方法一次,多次调用只有最后一次生效),但是你可以使用普通shell的分隔符来提供多个命令。这就像在你本机上执行一个shell脚本一样(当然,如果一个命令本身就是个交互式shell,这样就像ChannelShell)。


ChannelExec复合命令:


每个命令之间用 ; 隔开。说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。

每个命令之间用 && 隔开。说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。

每个命令之间用 || 隔开。说明:|| 是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。

ChannelShell

对于ChannelShell,以输入流的形式,可执行多条指令,这就像在本地计算机上使用交互式shell(它通常用于:交互式使用)。如要要想停止,有两种方式:


发送一个exit命令,告诉程序本次交互结束;

使用字节流中的available方法,来获取数据的总大小,然后循环去读。

ChannelSftp

ChannelSftp类是JSch实现SFTP核心类,它包含了所有SFTP的方法,如:


put():文件上传

get():文件下载

cd():进入指定目录

ls():得到指定目录下的文件列表

rename():重命名指定文件或目录

rm():删除指定文件

mkdir():创建目录

rmdir():删除目录

JSch支持三种文件传输模式:


OVERWRITE:完全覆盖模式,这是JSch的默认文件传输模式,即如果目标文件已经存在,传输的文件将完全覆盖目标文件,产生新的文件。

RESUME:恢复模式,如果文件已经传输一部分,这时由于网络或其他任何原因导致文件传输中断,如果下一次传输相同的文件,则会从上一次中断的地方续传。

APPEND:追加模式,如果目标文件已存在,传输的文件将在目标文件后追加。

SftpProgressMonitor接口类监控传输进度


JSch支持在文件传输时对传输进度的监控。可以实现JSch提供的SftpProgressMonitor接口来完成这个功能。


SftpProgressMonitor接口类方法:


init():当文件开始传输时,调用init方法。

count():当每次传输了一个数据块后,调用count方法,count方法的参数为这一次传输的数据块大小。

end():当传输结束时,调用end方法。




】【打印关闭】 【返回顶部
上一篇没有了 下一篇游戏行业必备的游戏盾,在抗C防D..