`
tzylwl
  • 浏览: 92107 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java调用'shell'脚本或'cmd'命令,并得到返回的结果集

阅读更多
ShellCmdLog.class中的代码:
public class ShellCmdLog extends Thread
{
    private boolean bLog2Error;  //是否打印错误Error标志
    private InputStream ins;     //待转换文件输入流

    /**
     * 设置是否打印错误Error,设置待转换文件的输入流
     * @param is    待转换文件输入流
     * @param flag  是否打印错误Error标志
     */
    public ShellCmdLog(InputStream is, boolean flag)
    {
        super("ShellCmdStream" + (flag ? "-error" : "-out"));
        bLog2Error = flag;
        ins = is;
    }

    /**
     * 执行转换线程
     */
    public void run()
    {
        if (ins != null)
        {
            InputStreamReader isr = new InputStreamReader(ins);
            BufferedReader br = new BufferedReader(isr);
            try
            {
                String line = null;
                while ((line = br.readLine()) != null)
                {
                    if (bLog2Error)
                    {
                        System.out.println("Shell_Err>" + line);
                    }
                    else
                    {
                    System.out.println("Shell_Out>" + line);
                    }
                } //end of while(true)
            }
            catch (IOException ioe)
            {
            System.out.println("ShellCmdLog error:" + ioe);
            }
            finally
            {
                try
                {
                    if (isr != null)
                    {
                        isr.close();
                    }
                } catch (IOException e)
                {
                    e.printStackTrace();
                }
                try
                {
                    if (br != null)
                    {
                        br.close();
                    }
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }
}

// java调用shell脚本
String path="/zte/ippbxweb/util/zxecs_dbbackup.sh" ;//脚本位于服务器中的路径
String statement[] ={ "/bin/sh", path}; 
try {
Process process = Runtime.getRuntime().exec(statement);
InputStream in = process.getInputStream(); // 获取输入流
InputStream err = process.getErrorStream();// 获取错误流

ShellCmdLog sgStdout = new ShellCmdLog(in, false);
ShellCmdLog sgStderr = new ShellCmdLog(err, true);

sgStdout.start();
sgStderr.start();

final int result = process.waitFor(); 


// 为流读出捕获流设定的时间间隔。
Thread.sleep(100);

if (process != null) {
    process.destroy();
}

// 集合读取线程
sgStdout.join();
sgStderr.join();


} catch (Exception e) {
e.toString();
}
2
0
分享到:
评论

相关推荐

    java调用shell脚本执行sqlldr与存储过程

    在linux环境中,这三个用户都可以直接在任意目录下执行该shell脚本,可是在java代码中调用shell脚本时,报了如下4个错误: 1、sqlldr: command not found 2、sqlplus: command not found 3、0750: You may need to ...

    android系统中调用shell脚本

    在Android系统中,由于安全性和权限的限制,直接调用shell脚本并不像在Linux或Unix环境下那样简单。然而,对于非root用户来说,确实有一些方法可以实现对shell脚本的调用,尤其是在开发和调试过程中。下面我们将深入...

    Java 调用 Shell 命令

    2. **调用Shell脚本**:通过Java的`Runtime.getRuntime().exec()`方法来执行Shell命令或脚本。 下面是一个具体的Java类实现示例,用于调用Shell脚本并记录执行日志: ```java import java.io.*; import java.text....

    vbs执行CMD命令and导出命令结果

    给定的部分内容展示了一个简单的VBS脚本示例,该脚本用于执行CMD命令并将其结果导出到文本文件中: ```vbscript Shell("cmd.exe /c dir g:\ > g:\1.txt") ``` 这段代码的含义是: - 执行`cmd.exe /c dir g:\`命令...

    CMD调用并读取返回信息

    下面是一个简单的示例,展示了如何使用`subprocess.check_output()`函数执行CMD命令并获取返回结果: ```python import subprocess # 执行CMD命令 result = subprocess.check_output("dir", shell=True) ...

    java 执行cmd命令及mongodb脚本

    Java执行CMD命令及MongoDB脚本是开发过程中常见的任务,特别是在集成系统或者自动化运维场景下。下面将详细讲解这两个主题。 一、Java执行CMD命令 在Java中,我们可以使用Runtime类或ProcessBuilder类来执行操作...

    Java远程调用Shell脚本并获取输出信息【推荐】

    Java远程调用Shell脚本并获取输出信息 本文主要介绍了Java远程调用Shell脚本并获取输出信息的方法。该方法通过使用Java的SSH客户端来连接远程Linux服务器,执行Shell脚本,并获取输出信息。 一、添加依赖 要使用...

    Java调用shell脚本解决传参和权限问题的方法

    Java调用shell脚本解决传参和权限问题的方法 Java调用shell脚本解决传参...Java调用shell脚本解决传参和权限问题的方法可以通过将shell命令或脚本和参数放入一个数组中,并在执行脚本之前赋予脚本执行权限来解决问题。

    C# 执行cmd 命令 获取返回信息

    ### C#执行CMD命令并获取返回信息的知识点详解 在.NET框架中,使用C#语言来执行CMD命令并获取其返回的信息是一项常见的需求。这项技术主要用于自动化任务处理、系统管理和软件开发过程中的测试等场景。下面我们将从...

    java javascript 调用命令行 cmd

    在IT领域,有时候我们需要在Java或JavaScript代码中执行操作系统级别的命令,例如运行系统脚本、管理文件、控制进程等。这种需求通常通过调用命令行(CMD)来实现。本文将详细探讨如何在Java和JavaScript中调用...

    python调用shell命令

    在进行系统自动化运维或脚本编程时,经常需要从Python脚本中调用Shell命令来执行特定任务,如文件管理、网络操作等。本文将详细介绍如何使用Python来调用Shell命令,并重点介绍`os.popen()`与`os.system()`两种方法...

    java调用shell

    在IT领域,特别是软件开发与运维(DevOps)过程中,Java程序调用Shell脚本是一种常见的需求,用于执行系统级任务、数据处理或自动化流程。本文将深入探讨如何使用Java来调用Shell脚本,包括基本原理、代码实现、常见...

    python调用shell脚本

    这个主题,"python调用shell脚本",是Python开发者在进行系统运维或服务器管理时经常遇到的情景。下面我们将深入探讨如何在Python中调用shell脚本,以及相关的知识点。 首先,Python内置的`os`模块提供了一个`...

    java在win下启动bat和在linux下启动shell脚本

    在Windows中,批处理文件通常以`.bat`或`.cmd`为扩展名,而Linux和Unix系统中,shell脚本通常以`.sh`结尾。这个工具类可能使用了Java的`Runtime`或者`ProcessBuilder`类来执行外部命令。 `Runtime.getRuntime()....

    java调用bat批处理与sh脚本

    调用Shell脚本时,我们可以这样写: ```java ProcessBuilder pb = new ProcessBuilder("/bin/sh", "myscript.sh"); pb.directory(new File("/path/to/your/script/directory")); // 设置脚本所在目录 Process ...

    使用java调用windows WIN脚本

    首先,Java中可以通过`Runtime`或`ProcessBuilder`类来执行外部命令,包括运行Windows批处理脚本(.bat)和VBS脚本(.vbs)。`Runtime.exec()`方法允许我们在Java程序中执行操作系统级别的命令,而`ProcessBuilder`...

    vb操作cmd命令行读取返回值

    `Form1.frm`和`.frx`是VB窗体的定义和资源文件,可能包含一个界面用于输入CMD命令并显示返回结果。`MSSCCPRJ.SCC`是版本控制的配置文件,`DOS命令行.vbp`和`.vbw`则是VB项目和工作空间文件。 总的来说,VB操作CMD...

    java调用DOS命令

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

    Java调用sqlplus执行定制的sql脚本

    - 在Java中,你可以使用`Runtime.getRuntime().exec()`或`ProcessBuilder`来执行shell命令。例如,创建一个SQL脚本文件(如`script.sql`),然后通过以下代码调用SQL*Plus执行该脚本: ```java String command =...

    在python 中实现运行多条shell命令

    # 调用Shell脚本 subprocess.call(["bash", "run_commands.sh"]) ``` - **解析**:这种方式更加灵活,尤其是在需要执行复杂的Shell逻辑时更为合适。通过使用`bash`命令来执行脚本,避免了直接使用`shell=True`所...

Global site tag (gtag.js) - Google Analytics