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();
      }
      }

}

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

时间: 2024-08-01 06:53:28

java使用jsch远程链接linux执行命令的相关文章

java应用程序远程登录linux并执行其命令(ssh jar包)

http://www.ganymed.ethz.ch/ssh2/在这个网址下载一个调用ssh和scp命令的jar包. 然后,就可以写程序了.将上面的jar包导入MyEclipse,下面是一个类的实例代码. package hh; import java.io.BufferedReader;     import java.io.IOException;     import java.io.InputStream;    import java.io.InputStreamReader; imp

jenkins 执行ssh 远程linux执行命令

1.远程机器编写脚本: 脚本名称为: /app/jboss/jboss-as/logs/ALL_SERVICE_STOP.sh 功能为:停止某个服务器某个目录下面的所有应用 #!/bin/bash path=/app/jboss/jboss-as/logs for instance in `ls $path|grep ".*.sh"|grep -v ALL_SERVICE_STOP.sh|xargs`;do cd $path ./$instance stop done 2.2台linu

使用putty远程链接Linux

使用putty远程链接Linux操作步骤 下载客户端:下载地址 安装putty 安装成功后,打开putty客户端  编辑信息 首先找到将要连接的Linux的IP地址  编辑相关信息  登陆远程Linux

Kali2.0通过xrdp实现windows远程链接Linux

标题:Kali2.0通过xrdp实现windows远程链接Linux apt-get install xrdp 首先需要安装xrdp 接下来安装xfce4 apt-get install xfce4 /etc/xrdp/startwm.sh 需要配置上面的文件 这里利用vi编辑 添加以下代码 echo "xfce4-session" >~/.xsession :wq退出并保存 重启xrdp服务 service xrdp restart 最后在windows上用mstsc链接

在windows上通过ssh远程链接linux服务器[转]

本文分别转自 [http://jingyan.baidu.com/article/6d704a130de40e28db51cab5.html] [http://www.cnblogs.com/mliudong/p/4094519.html] 今天想要新装了一台linux服务器,想要将其搬到机房,同时也要实现通过别的电脑对该服务器的访问,通过windows上装的ssh访问linux服务器,发现链接不上,通过百度发现linux服务器上要装ssh-server,所以百度了安装教程(http://jin

【shell】-【批量远程MySQL,执行命令】-【工作总结】

昨天下班前,老板给了一批LOG数据库IP地址,需要统计LOG表里Message字段top 10的结果,并输出到一个excel文件里.抽查看了下,有两种格式的以当天日期结尾的表名.由于数量太多,时间紧迫,只好写批量脚本解决问题.并以此扩展,解析其中的几个常用shell程序,主体脚本写在文章后半部分.学习shell重在灵活运用命令,形成自己的思维方式,和书写习惯,脚本参考即可. 解题过程步骤:1.梳理IP地址及对应表名2.确定查询SQL3.批量查询数据 完整脚本附在文章最后 解析下常用到的知识点:

分发系统expect远程登录,执行命令,传递参数

分发系统:shell 上线脚本expect实现远程传输文件,执行命令,系统上线等功能expect 脚本远程登录vim 1.expect#! /usr/bin/expectset host "192.168.91.129"set passwd "1q2w3e"spawn ssh [email protected]$hostexpect {"yes/no" { send "yes\r"; exp_continue}"as

远程链接Linux

为什么要远程连接Linux 在实际的工作场景中,虚拟机界面或者物理服务器本地的终端都是很少接触的,因为服务器装完系统之后,都要拉倒IDC机房托管,如果是购买的云主机,那更碰不到服务器本体了,只能通过远程连接的方式管理自己的Linux系统. 因此在装好Linux系统之后,使用的第一步应该是配置好客户端软件(ssh软件进行连接)连接Linux系统. 通过什么软件呢? Xshell SecureCRT 远程连接必备的知识 ip地址 > 服务器的位置 互联网上的计算机都会有一个唯一的32位的ip地址,如

Linux执行命令./command与之间输入命令的区别

我们知道查看文件属性的命令ls的完整文件路径为:/bin/ls(这是绝对路径,)问什么我可以在任何地方执行,任何目录下输入ls就一定可以显示出一些信息而不会说找不到该/bin/ls命令,这是因为不同的用户有自己的path环境变量,在path环境变量中如果已经设置了这些路径,那就以在任何目录下执行命令ls,可以通过$Path查询包含的路径. 如果将ls有/bin/ls移动为/root/ls,然后自己也在/root目录下,那么能不能直接输入ls来执行?如果不能,该如何执行这个命令? 因为/root不