java 利用sshd-core 远程执行Linux shell命令

本文介绍了在jsch不再维护的情况下,如何利用mina-sshd中的sshd-core库来执行Linux shell命令。提供了相关的代码示例和maven配置,适用于需要与Linux系统进行远程交互的Java开发场景。
摘要由CSDN通过智能技术生成

前面一篇文章写道利用jsch 包远程执行linux 命令,但是该包已经很久没有更新, 后期linux 的open-ssh 升级,可能部分协议不支持,发现mina-sshd 里面有一个还在维护的远程执行 linux shell 命令的包
代码demo 如下


import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.EnumSet;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.apache.sshd.client.SshClient;
import org.apache.sshd.client.channel.ChannelExec;
import org.apache.sshd.client.channel.ChannelShell;
import org.apache.sshd.client.channel.ClientChannelEvent;
import org.apache.sshd.client.future.ConnectFuture;
import org.apache.sshd.client.session.ClientSession;
import org.apache.sshd.common.util.io.input.NoCloseInputStream;
import org.apache.sshd.common.util.io.output.NoCloseOutputStream;
import util.SshConnection;

public final class SshUtils {
   
  
  public static SshResponse runCommand(SshConnection conn, String cmd, long timeout)
      throws SshTimeoutException, IOException {
   
    SshClient client = SshClient.setUpDefaultClient();

    try {
   
      // Open the client
      client.start();

      // Connect to the server
      ConnectFuture cf = client.connect(conn.getUsername(), conn.getHostname(), 22);
      ClientSession session = cf.verify().getSession();
      session.addPasswordIdentity(conn.getPassword());
      session.auth().verify(TimeUnit.SECONDS.toMillis(timeout));

      // Create the 
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值