java控制远程ssh-JSCH(二)

github: https://github.com/wengyingjian/ssh-java-demo.git

这次找到了一套新的api,叫jsch。网上查了一下,顺便把官网的几个demo给一通拿过来了(还看到了sftp,看来到时候文件传输也可以用这个写)。

一。测试与修改代码
    
    运行了给的代码以后发现时带图形化的,果断删去不相干的代码,看上去果然清楚多了。
    然后调用了一下,发现返回的结果也方便:每次服务器给出啥反应就得到啥字符串,这下字符串切割要方便一些了。
    关键是在打印信息的时候我看到了个“while true” ,试了一下,果然能够保证程序不退出,持续输出,这就是我想要的。
    但是也发现了不足:每次只能运行一条命令。
    这一些东西是前两天在机场写的,不知道为啥ssh连接很慢,所以执行多条语句的时候等的超级蛋疼。。


二。对代码的改造

    将原先的代码改了一通,变成自己的工具类,基本功能得以实现。

三。整个功能的合并

    回到最初的目的,是要做4件事:
        0).ssh user@host
            password
        1).netstat -anp|grep 8080
        2).kill pid
        3).$CATALINA_HOME/bin/startup.sh
        4).tail -f  $CATALINA_HOME/logs/catalina.out
    其中1和2之间是要得到返回结果,在java中分析到底第二步要kill的pid是多少的。
    所以执行顺序应该是:1->2,3,4
    但是现在支持连续多条命令的不支持输出日志,支持输出日志的不能执行多条语句,所以只能是1->2,3->4

    补一句:log4j未调通,所以使用system.out显得有点low了。。

四。其它的思考
   
    既然没有找到我特别满意的javaAPI,我是不是可以把ssh协议看作是http协议(先不管加密认证的事),通过socket编程来自己实现一个ssh的客户端。
    这么一想,如果不用ssh协议呢?的确,用啥都行,甚至自己用java随便在服务器上来个端口,客户端与其通信,这样理论上也是行得通的。也能找到同样在运用中的例子:cargo以及tomcat插件的自动化部署,走的就是http协议,然后通过tomcat的manager来认证。然而,tomcat关闭了就用不了了。
    所以,为什么要用ssh,(抛开安全的问题)就是因为ssh-server几乎已经成了linux服务器的标配,所以我们才使用的。
    至于用java来自己写一个ssh客户端,我会先把毕业设计其它的部分先完成,然后再用剩余的时间去尝试自己实现。
posted @ 2015-11-29 22:15  Andy啊  阅读(5085)  评论(0编辑  收藏  举报