java控制远程ssh-expect4j(一)

12/12/2015来源:Java教程人气:3395

github : https://github.com/wengyingjian/ssh-java-demo.git
程序写完后,ssh连接到远程服务器上需要做的步骤都是固定的,所以我们可以通过程序来使这件事情简单化。

1.原先要做的事:

    0).ssh [email protected]
            passWord
            远程登录
    1).$CATALINA_HOME/bin/shutdown.sh
        关闭tomcat
    2).$CATALINA_HOME/bin/startup.sh
        启动tomcat
    3).tail -f  $CATALINA_HOME/logs/catalina.out
        监控程序日志输出。这里也可能是log4j指定的其它目录。


2.寻求解决方案。

    最开始(现在也是)我用的就是上面的方法,感觉特别死板,而且我也看到公司里有人用shell来做这些事情。于是我就想,我是不是也应该让程序来帮自己工作。
    首先,我不怎么会bshell,其次,我想做的更好(将这些所有的步骤放到maven插件里面去做)。所以我就想,既然bshell可以来控制ssh,那么我用java应该同样也可以。
    上网搜了下,发现的确有,于是就拿过来用了。


3.搬过来改造
    
    首先是测试与加注释。
    为了保险起见(有前辈告诉我调用bin/shutdown.sh不好,还没关掉又打开会出问题,直接找到进程杀死更加安全)
    发现这个调用返回字符串的时候有些坑,每次都是得到所有的消息,无奈只好字符串处理。来得到返回的进程号,然后杀死。
    到这里一切都还成功


4.现在需要追踪日志了
    
       翻了半天接口没找到能像ssh连接时一样不断输出日志的。所以不能再去找找有没有其它的方法了。