当前位置:网站首页 > 技术博客 > 正文

java远程调用技术



前段时间接了一个比较特殊的需求,需要做一个用于部署服务的服务。主要是将一个k8s服务集群部署到远端的服务器上,具体服务器的连接信息会通过接口传入。

本来部署是人工来完成的,无非是将一些必须的文件scp到目标服务器上,然后ssh远程登录,执行一些安装的操作,齐活。安装的流程没什么问题,主要是这些步骤需要使用代码来实现,也就是需要一个支持SSH的client库来执行这些操作

最终选用了JSch(Java Secure Channel),官网介绍:

JSch is a pure Java implementation of SSH2.
JSch allows you to connect to an sshd server and use port forwarding, X11 forwarding, file transfer, etc., and you can integrate its functionality into your own Java programs. JSch is licensed under BSD style license.

为了完成部署服务的任务,需要解决几个问题:

  • SSH连接到远端的服务器
  • 在服务器上执行指令
  • 使用scp命令传输文件
  • 编辑服务器上的文件,主要是为了修改一些配置文件

这里介绍下几个主要的工具方法

先定义一个Remote类,用于记录服务器登录信息

 
  

这里填充了一些默认值,平时用的时候方便一些

JSch使用Session来定义一个远程节点:

 
  

测试一下:

 
  

正确的输入了服务器地址和密码后,连接成功。

这里要提一下,JSch会优先使用填入的ssh_key去尝试登录,尝试失败后才会使用password登录,这点和平时使用ssh命令的交互是一致的,好评~

接下来就是编写一个通用的方法,用于在Session上执行命令

 
  

测试一下:

 
  

执行后,日志输出如下内容:

 
  
 
  

scpFrom:

 
  

另外还有一个公用的方法checkAck:

 
  
 
  
 
  

我们平时在服务器上编辑文件一般使用vi,非常方便,但是在这里操作vi就有点复杂了
最后采用的方案是,先将源文件备份,然后scp拉到本地,编辑完后scp回原位置
remoteEdit方法:

 
  

测试一下:

 
  

执行后日志输出:

 
  

可以看到字母已经都是大写了

上面这些方法,基本上覆盖了我们日常在服务器上进行操作的场景了,那么不管部署服务,还是运维服务器都不成问题了

  • 上一篇: rtt技术
  • 下一篇: vivoy77手机多少钱
  • 版权声明


    相关文章:

  • rtt技术2025-09-01 17:01:04
  • cxp是什么2025-09-01 17:01:04
  • spi协议频率2025-09-01 17:01:04
  • systemC语言2025-09-01 17:01:04
  • 异步fifoverilog代码2025-09-01 17:01:04
  • vivoy77手机多少钱2025-09-01 17:01:04
  • arm芯片架构2025-09-01 17:01:04
  • windows10怎么查看硬盘序列号2025-09-01 17:01:04
  • 2021太原最新土地拍卖2025-09-01 17:01:04
  • xcp协议作用是什么2025-09-01 17:01:04