`
tzylwl
  • 浏览: 90733 次
  • 性别: 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下调用脚本的例子,在没有root的情况下,大多只能执行一些简单的脚本命令,经验证,总结出一种还算比较有用的方法,可以较多数脚本,算是比较靠谱,共享下

    python脚本执行CMD命令并返回结果的例子

    最近写脚本的时想要用python直接在脚本中去执行cmd命令,并且将返回值打印出来供下面调用,所以特意查了下,发现主要有一下几种方式来实现,很简单: 就拿执行adb, adb shell, adb devices 举例 1.第一种方法 os ...

    VB Shell调用后等待程序运行结束

    在使用shell后,如何等待此程序完成后,程序才继续执行。

    node-http-shell:执行shell脚本并在http get调用中获取结果

    type -> 选项exec & spawn cmd -> 运行指定的命令url -> 发布输出的 url 你很高兴去。用法2 用于更大的流式输出 var app = require ( 'express' ) ( ) ;var spawnProcess = require ( "../app/spawn_process.js" ) ...

    详解python调用cmd命令三种方法

    该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,即脚本中“exit 1”的代码执行后,os.system函数返回值的高位数则是1,如果低位数是0的情况下,则函数的...

    cmd操作命令和linux命令大全收集

    CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS...

    shell脚本编程

    在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。让你快速上手。通过考试

    将文件移动到指定文件夹并返回下载链接的SHELL脚本

    cmd_down.sh 安装自创指令ndown 使用方法 (因为服务器内无法获取外网地址,所以需要安装时手动输入) sudo bash cmd_down.sh 本机ip地址 示例:sudo bash cmd_down.sh 175.178.105.49 内部发生了什么 往路径/usr/...

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

    使用py时可能需要连续运行多条shell 命令 1. # coding: UTF-8 import sys reload(sys) sys.setdefaultencoding('utf8') import subprocess import os import commands #os.system('cmd1 && cmd2') cmd1 = ...

    shell脚本学习

    在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为...

    msf命令全集

    MSF 命令全集 MSF(Metasploit Framework)是一款功能强大且功能丰富的渗透测试工具,提供了多种命令来实现各种功能。...* `shell`:返回一个 cmdshell * `shutdown`:关闭远程系统 * `sysinfo`:显示系统信息

    脚本制作迅雷后门脚本制作迅雷后门

    脚本制作迅雷后门 教程作者:平行空间 305058321 在安装了迅雷下载软件后 在网页的链接右击都会出现“用迅雷下载” 其在注册表的位置: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt 我们...

    js使用wscript.shell打开文件-可以用于iis

    包括:dos 中打开路径带空格的文件;js脚本打开本地文件;打开多媒体视频文件;附代码与示例;iis中无法调用cmd命令,可以用wscript。

    Python3 执行系统命令并获取实时回显功能

    但在以前脚本的基础上很多是需要调用系统命令的比如 VS 编译一个项目,我们需要获取实时的回显知道编译的结果和进度。所以就有了以下方法: @staticmethod def __external_cmd(cmd, code=utf8): print(cmd...

    700个批处理打包下载.rar

    无限制实数加减运算脚本.cmd 星光闪烁.bat 星光闪烁.cmd 显示c盘~z盘.bat 显示只有指定个数字符的行.cmd 显示各分区剩余空间情况.cmd 显示当面途径DIR.bat 显示所有分区的剩余空间(以MB为单位).cmd 显示本机用户...

    存储过程的安全及性能优化

     exec master..xp_cmdshell 'dir *.exe' -- 执行目录命令查询[sql2005\sql2008]  exec master..xp_fixeddrives --列出硬盘分区各自可用空间  xp_regwrite根键,子键,值名,值类型,值【sql2008拒绝访问】  ...

    大量批处理实用程序例程

    调用系统气泡.cmd 通过inf重启电脑.cmd C盘转换为NTFS格式.cmd dos下重启.bat guest.bat win2000关机命令.bat WIN2003 IIS最小权限分配.bat winxp修改计算机名.bat xp下确定最后的盘符.bat 不显示扩展名.bat 不显示...

    解决docker CMD/ENTRYPOINT执行sh脚本报: not found/run.sh:

    补充知识:docker中启动容器时CMD调用的sh脚本中if命令报未预期的符号 if[[的解决办法 最近通过Dockerfile编写镜像,CMD中调用的是sh脚本(start.sh)进行启动容器,通过docker run启动时,启动不成功,进行docker ...

    ppt2jpg PPT输JPG的脚本

    一段利用wps将ppt转换成jpg的脚本代码。 需要在windows下使用。需要已按装wps。 使用方法:在CMD中 wscript ppt2jpg.vbs PPT的完整路径 输出JPG的完整路径。...其他外部程序可以通过调用系统的shell指令,调用这个脚本。

Global site tag (gtag.js) - Google Analytics