java使用jsch远程链接linux执行命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java使用jsch远程链接linux执行命令相关的知识,希望对你有一定的参考价值。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

/**

  • java 使用jsch远程链接linux 执行命令
  • @author myz
  • */
    public class JSchUtil
    private static JSch jsch;
    private static Session session;

    /**

    • 首先连接服务器
    • @param user
    • @param passwd
    • @param host
    • @throws JSchException
      */
      public static void connect(String user, String passwd, String host) throws JSchException
      jsch = new JSch();
      session = jsch.getSession(user, host, 22);
      session.setPassword(passwd);
      java.util.Properties config = new java.util.Properties();
      config.put("StrictHostKeyChecking", "no");
      session.setConfig(config);

      session.connect();

    /**

    • 连接服务器后执行相应的linux命令
    • @param command
    • @param user
    • @param passwd
    • @param host
    • @throws JSchException
      */
      public static void execCmd(String command, String user, String passwd, String host) throws JSchException
      connect(user, passwd, host);
      BufferedReader reader = null;
      Channel channel = null;
      try
      while (command != null)
      channel = session.openChannel("exec");
      ((ChannelExec) channel).setCommand(command);
      channel.setInputStream(null);
      ((ChannelExec) channel).setErrStream(System.err);
      channel.connect();
      //获取流
      InputStream in = channel.getInputStream();
      reader = new BufferedReader(new InputStreamReader(in));
      String buf = null;
      while ((buf = reader.readLine()) != null)
      System.out.println(buf);//打印返回的结果日志


      catch (IOException e)
      e.printStackTrace();
      catch (JSchException e)
      e.printStackTrace();
      finally //最后流和连接的关闭
      try
      reader.close();
      catch (IOException e)
      e.printStackTrace();

      channel.disconnect();
      session.disconnect();

以上是关于java使用jsch远程链接linux执行命令的主要内容,如果未能解决你的问题,请参考以下文章

JSch 在一个会话中执行多个 linux 命令

Jsch使用SSH协议连接到远程Shell执行脚本

使用java中的jsch在linux中通过sudo命令执行shell脚本以启动服务

Java远程实现Linux文件内容读取(通过远程执行shell命令分析日志)

Java远程实现Linux文件内容读取(通过远程执行shell命令分析日志)

Java远程实现Linux文件内容读取(通过远程执行shell命令分析日志)