JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。你可以将它的功能集成到你自己的 程序中。同时该项目也提供一个J2ME版本用来在手机上直连SSHD服务器。
本文采用的linux操作系统是CentOS6.5.
TIPS: 查看Linux操作系统(内核)版本可以使用:uname -a; uname -r; cat /etc/issue; cat /etc/redhat-release等命令。
第一个例子:采用Java模拟shell操作。
这里涉及到几个参数,会在下面的代码中有所体现:
USER:所连接的Linux主机登录时的用户名
PASSWORD:登录密码
HOST:主机地址
DEFAULT_SSH_PROT=端口号,默认为22
运行结果:
输入ls查看:
这样就和在原linux系统中一样使用shell功能了。
如果需要跳过如下的检测:
只需要在程序中加入相应的代码:
第二个例子:运行一条shell指令,这里就那“ls”做例子好了。
No more talk, show you the code:
第二个例子相比于第一个例子来说将UserInfo采用static class的方式提取出来,这样更直观一点。
JSch是以多线程方式一下,所以代码在connect后如果不disconnect channel和session,以及相关stream, 程序会一直等待,直到关闭。
需要注意的一个问题,相关的Stream和Channel是一定要关闭的,那么应该在什么时候来关?执行connect后,JSch接受客户端结果需要一定的时间(以秒计),如果马上关闭session就会发现什么都没接受到或内容不全。
还有一点注意,使用shell时,看到执行后没有结果,解决办法是在命令行后加上”\n”字符,server端就认为是一条完整的命令了。
最后将第一个和第二个例子合并,并提取一些公用模块,以便更好的理解和使用:
测试代码:
测试结果:
还有解释查看一下左边是否有个shell.txt以及shell.txt是否有相应的内容。