JSch简介

常用的有三种通道,即ChannelShell、ChannelExec、ChannelSftp,前两类用于执行命令(命令可以是shell语句,也可以是python  xxx.py),后一种是用于上传下载文件。


ChannelShell和ChannelExec的区别: 前者是交互式的,在channel.connect()之前,需要获取outputStream和inputStream,然后outputstream发送命令,从instream中读取命令的结果(注意,发送命令之后,读取命令之前要等待一会儿,一般需要写个循环判断,每秒读一次,根据实际情况设置xx秒超时退出),但是有个坏处是,它执行就像登陆到vm上打印的信息一样,无论执行命令后的任何信息,它都会通过instream返回到客户端来,而你可能仅仅需要命令执行后的结果;于是就有了后者,非交互的,一次通道执行一条命令(当然如果你组合的好,也可以多条,反正就是一个字符串,一次交互,偷偷的告诉你,这一个python脚本,下发的命令去执行这个脚本,可以做好多好多事情哦),好处是,它返回的信息非常干净,只返回标准输出,标准错误是不返回的,这时你可以利用python的print,正确时你print正确信息,错误时print错误信息,客户端都能获取到结果啦(因为print是标准输出)。

使用步骤:

1、new一个JSch对象;

2、从JSch对象中获取Session,用于连接,并设置连接信息(根据SSH的连接原理,有两种方式,一是用户名+密码,二是用户名+privatekey+passphrase,第二种方式要在第1步设置,即jsch.addIdentity(xxx));

3、使用session对象调用opnChannel("xxx")打开通信信道,并连接;

4、后面就是不同的channel,不同的操作啦。

推荐阅读更多精彩内容

  • 多次写想,却又怕自己贫乏的言语不足以描述心中的迷茫,迟迟没有动笔,而现实却是自己一次又一次的纠结着,然后遗忘,...
    东方月阅读 126评论 0 1
  • 悬念 2007-10-18...
    Jeff随笔阅读 77评论 0 0
  • 〔I〕今天的主要学习内容是“自律一小时”。目的是引导大家将最重要的事情就在一个完整的一小时内解决。具体步骤是: 1...
    冬夜读书YHY阅读 90评论 0 1
  • 共享经济、分享经济,在资源分享+物的分享+信息分享等诸多分享的基础上,必然会涉及到人的分享,而人的分享必然涉及到法...
    白话劳动法阅读 476评论 0 2