问题描述
程序需求,需要通过Java后端程序使用grep命令从指定文件搜索关键词,返回相关行展示到前端。
解决方案
首先想到的就是使用SSH工具类登入目标机器就执行命令,读取返回流就完事。但事情并没有想象中的那么简单。组长告知我访问目标主机需要先SSH登入中间机,再使用中间机发起SSH。
好嘛,写个Shell就可以了。但是在中间机向目标机登入的时候犯了难。密码怎么输入???
通过面向Google编程。我找到了如下的解决方式
- expect
- sshpass
- JSch进行跳转
其实我是先想用组长发的工具类使用的是Ganymed,导包的时候Maven仓库上最近更新时间2014.emmmmm
并且就是卡在了中间机跳远程的那一步,也没有找到方法所以我放弃了…
中间想到过使用工具类和expect/sshpass组合使用,虽然expect不需要root命令但是组长说,中间机不归我们管,不能动。好嘛,那就造轮子咯😎
使用JSch
才怪,怎么可能会自己造轮子,这辈子都不可能自己造轮子。
于是又面向Google编程,找到了下面的网站
发现有个JumpHosts.java的示例代码.
所以我按照自己的风格封装了下GitHub里。