Java实现远程联接服务器执行shell命令

       前些日子需要在服务器上发布一个分支的版本,供其它人员联调,发布脚本都有现成的,改改SVN路径就可以发布了,但是我不想每次都要重新下载分支代码,这样发布的路程会很慢,怎么办呢?之前听同事马恒阳同学介绍过svn的switch命令,可以避免down下所有的代码,好,我决定这次试试这个方法。因为发布脚本是shell写的,我准备改写shell了,没写过shell,变量都不知道咋赋值取值,因为改动比较小,我觉着可以顺利完成。 我改写的思路是这样的,执行项目打包前,我先检查一下命令行里有木有svn路径参数,如果有,我将会执行svn switch命令来改变当前的svn指向;若命令里没有svn路径参数,我将默认使用当前目录下svn的路径。很简单对吧,那就可以愉快的开始改写shell了。

  不到三分钟,改好了,高高兴兴的执行了部署命令,duang!报错了…,尼玛,怎么会这样,不可能,我不信,又做了一番改动,还是报错,我把shell拿给其他同事看,他们也看不出来,我也是醉了,这么简单的shell为何会报错呢,颓废的我无法平息内心的愤怒,我决定不用shell了。换个方式吧,不用shell用啥,gradle?太高大上,需要花费不少的学习成本,那就用java,只有java我最拿手.... 就这么愉快的决定了。 既然使用java,改如何访问远程服务器呢?嗯,这是个问题,不过万能的百度告诉了我,ssh2第三方jar包,可以帮你搞定一切,于是乎,我不顾一切的down下了这个包,发现这个包N久没更新了,不管了,先拿过来用用吧。

  照着demo,一步一步来吧,使用ssh2开源包如何实现远程连接服务器呢,我总结了,可以分为以下步骤:

  • 创建Connection,我相信做过java的童鞋对这个玩意很熟悉了吧,跟数据库连接的方式大同小异。不用我说,这个步肯定需要远程服务器的IP、用户名和密码,有了这三元素才能创建一个Connection。

  • 有了Connection后,我就可以向服务器发送命令了吧?此时还不行,因为,现在只是打开了联结的通道,你还需要一个会话对象session,从这里可以看出跟连接数据库的方式一模一样啦。session是由Connection的openSession方法创建的,有了session,你就可以放心的执行远程shell命令,这样的话,java也能实现原来只有脚本语言能干的事了,此时的你是不是很兴奋!

  好,话不多说,直接上代码,一窥究竟吧,代码呢?代码呢?…,我当然不会把代码贴在这里了,手机看这么一坨代码,估计你晚上也睡不着,手机太小,看着头晕目眩,体验不好,我还是放在github上,有兴趣的同学可以看看。

 

如果你对此文章有兴趣,请使用微信扫描下面二维码,关注javac公众号,可获取更多文章。 

大猿软件

javac公众号

 

转载于:https://my.oschina.net/u/153539/blog/514888

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值