码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-07-17 12:42:02      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:public   channel   stat   int   edr   read   word   config   row   

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执行命令

标签:public   channel   stat   int   edr   read   word   config   row   

原文地址:https://blog.51cto.com/6272379/2420784

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!