`
qindongliang1922
  • 浏览: 2183921 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117534
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125921
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59907
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71301
社区版块
存档分类
最新评论

Java如何调用Linux命令

    博客分类:
  • JAVA
阅读更多

(方式一)适合Java调用本地的Liunx无须任何依赖包

    /***
     * 第一种方法,仅仅执行命令无须关注返回结果
     * @throws Exception
     */
    public static void exeCmd() throws Exception{
        Runtime r = Runtime.getRuntime();
        //执行linux命令,不关心返回结果,此处,可以执行一个shell脚本,或者python脚本
        Process p = r.exec("tesseract 12.jpg  ko ");
        p.waitFor();
    }


    /**
     * 第二种方法,需要执行命令完后的返回结果
     * @return  result
     * @throws Exception
     */
    public static String getCodeResult()throws Exception{
        exeCmd();
        //执行一个命令需要展示返回结果的
        Runtime r = Runtime.getRuntime();
        Process p = r.exec("cat ko.txt ");
        p.waitFor();
        BufferedReader b = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = "";
        StringBuffer sb=new StringBuffer();
        while ((line = b.readLine()) != null) {
          sb.append(line).append("\n");
        }
       System.out.println("result: "+sb.toString());
        b.close();
        return sb.toString();

    }



(方式二)适合远程调用不在同一台机器上的Linux命令,这种方式需要使用
开源的jsch , 官网:http://www.jcraft.com/jsch/ , maven依赖如下:

<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.53</version>
</dependency>



一个demo代码如下:

package com.java.ssh;

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

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

public class RemoteSSH {


     /**
       * 远程 执行命令并返回结果调用过程 是同步的(执行完才会返回)
       * @param host    主机名
       * @param user    用户名
       * @param psw    密码
       * @param port    端口
       * @param command    命令
       * @return
       */
      public static String exec(String host,String user,String psw,int port,String command){
        String result="";
        Session session =null;
        ChannelExec openChannel =null;
        try {
          JSch jsch=new JSch();
          session = jsch.getSession(user, host, port);
          java.util.Properties config = new java.util.Properties();
          config.put("StrictHostKeyChecking", "no");
          session.setConfig(config);
          session.setPassword(psw);
          session.connect();
          openChannel = (ChannelExec) session.openChannel("exec");
          openChannel.setCommand(command);
//          int exitStatus = openChannel.getExitStatus();
          openChannel.connect();  
                InputStream in = openChannel.getInputStream();  
                BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                String buf = null;
                while ((buf = reader.readLine()) != null) {
                    result+= new String(buf.getBytes("gbk"),"UTF-8")+" \n";
                }  
        } catch (JSchException | IOException e) {
          result+=e.getMessage();
        }finally{
          if(openChannel!=null&&!openChannel.isClosed()){
            openChannel.disconnect();
          }
          if(session!=null&&session.isConnected()){
            session.disconnect();
          }
        }
        return result.trim();
      }


    public static void main(String[] args) {

        String exec = exec("192.168.1.187", "user", "pwd", 22, "tesseract 12.jpg  ko && cat ko.txt  ");
 //   String exec = exec("192.168.1.187", "user", "pwd", 22, "ls -l  ");
        System.out.println(exec);    


    }


}



有什么问题 可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,我们同行。


3
9
分享到:
评论

相关推荐

    java调用linux命令、脚本工具类.zip

    Java程序调用linux命令、脚本,支持程序在服务器上使用linux命令。工具类为:ProcessUtil,支持单个命令和批量命令执行函数,同时在工具类中添加了getFileLineNumByCmd函数支持通过linux命令获取文件行数的样例。

    Java调用Linux命令

    ### Java调用Linux命令 Java提供了一种强大的机制来执行操作系统级别的任务,其中包括调用Linux命令。实现这一功能的核心是`Runtime`类中的`exec()`方法。这个方法允许Java应用程序创建一个新的进程来执行指定的...

    java调用linux系统命令

    java调用linux系统命令的封装工具类。

    Java 调用 Linux 命令实战(含完整代码)1

    本文将详细介绍如何使用Java调用Linux命令,以满足特定场景的需求,如文中提到的通过Java接口重启keepalived服务。首先,我们将理解Java调用Linux命令的基本原理,然后通过具体的代码示例来展示实现这一功能的过程。...

    java调用Linux命令获取输出流

    java调用Linux命令获取输出流,用于解决获取不到输出流的方法

    java调用linuex命令

    本文将详细探讨如何利用Java调用Linux命令,这一技能对于任何希望在Java应用中集成Linux功能的开发者来说都是至关重要的。 ### Java调用Linux命令的方法 Java提供了多种方式来执行外部命令或脚本,其中最常用的是...

    14-Java操作Linux命令分割合并文本文件1

    2. **Java调用Linux命令** - 在Java中,可以通过`Runtime.getRuntime().exec()`或`ProcessBuilder`类来执行Linux命令。在描述中提到的`getDiskUsage`方法就使用了`ProcessBuilder`来执行`df -hl -P`命令,获取磁盘...

    java执行linux命令,java调用linux脚本文件,java启动停止发布tomcat,servlet ajax文件上传

    java 执行linux命令源码,java调用shell脚本源码,java web发布war到tomcat,servlet文件上传,ajax文件上传。 java web 上传war包、停止、启动、发布tomcat。 命令修改成自己的目录即可使用。

    Java 调用 Linux shell 命令执行框架:sshxcute

    sshxcute 就是这样一个框架工具集,它基于 JSCH 构建,允许工程师利用Java 代码通过 SSH 连接远程批量执行 Linux/UNIX 系统上的命令或者脚本,同时加入了判断成功与否,取回输出等多种实用功能。sshxcute 不管是针对...

    Java调用Linux CenterOS系统安装的OpenOffice4报错

    在这个特定的问题"Java调用Linux CentOS系统安装的OpenOffice4报错"中,开发者可能在尝试使用Java来自动化处理文档,如转换Office格式,而OpenOffice4提供了一个开源的解决方案,可以将Microsoft Office文档转换为...

    在Linux系统下用java执行系统命令实例讲解

    本文将深入讲解如何在Java程序中调用Linux命令,并通过实例来阐述这一过程。 一、Runtime类 `Runtime`类是每个Java应用程序都有的一个单例对象,它提供了执行外部进程的能力。通过`getRuntime()`方法可以获得`...

    使用java远程调用Linux命令_java-linux-command.zip

    使用java远程调用Linux命令_java-linux-command

    java调用DOS命令

    Java调用DOS命令是指在Java程序中执行操作系统级别的命令,比如Windows下的CMD命令或Linux下的Shell命令。这种功能在很多场景下都很有用,比如自动化脚本、文件操作、系统管理等。Java提供了Runtime类和...

    java连接linux,执行shell命令的工具类 sshxcute.jar

    SSHXCUTE.jar是一个Java库,它允许程序员通过SSH连接到Linux系统并执行shell命令,而无需深入了解SSH的底层细节。 SSHXCUTE.jar的核心功能包括: 1. **建立SSH连接**:通过提供主机名、用户名、密码或密钥对信息,...

    java 调用doc命令

    在Java中,我们可以通过`Runtime.exec()`或`ProcessBuilder`类来执行这样的系统命令。 首先,让我们详细了解一下`Runtime.exec()`方法。这个方法允许Java程序在运行时执行外部程序或命令。例如,如果我们要在CMD中...

    java应用程序远程登录linux并执行其命令

    在Java编程环境中,远程登录Linux系统并执行命令是一项常见的任务,尤其在自动化运维、系统管理以及分布式系统中。本文将详细讲解如何实现这一功能,并基于给出的“AutoStart”文件名,推测这是一个自动启动相关服务...

    java代码执行linux系统命令

    java代码执行linux系统命令

    java代码中调用linux/unix命令

    本文将详细介绍如何在Java代码中调用Linux/Unix命令,以及相关的技术要点。 首先,Java提供了`Runtime`类和`ProcessBuilder`类来执行外部命令。`Runtime.getRuntime().exec()`方法是较早的方式,而`ProcessBuilder`...

    JAVA调用OS命令删除文件

    这两个类提供了与操作系统交互的能力,让我们能够执行系统命令并获取其结果。下面我们将深入探讨如何在Java中调用OS命令来删除文件,并分析这种方法相对于Java内置的文件操作方法的优缺点。 首先,我们来看一个简单...

    java调用操作系统命令(远程,本地都有)

    java调用操作系统命令源码工具类,包含远程输入用户名和密码方式及本地调用,同时兼容处理了Windows及Linux命令和执行结果的返回。使用者可以通过工具类方法直接调用,传入操作系统的命令即可执行,方法返回操作结果...

Global site tag (gtag.js) - Google Analytics