zoukankan      html  css  js  c++  java
  • Java /Jsp 执行操作系统命令 windows/Linux

    原创  Java /Jsp 执行操作系统命令 windows/Linux 收藏

    1.Windows 很简单,写出来时为了和linux对比

       public void execWindowsCmd(String cmd) throws Exception {
          Runtime rt = Runtime.getRuntime();
          Process ppp = rt.exec(cmd);
          //input
          InputStreamReader ir = new InputStreamReader(ppp.getInputStream());
          LineNumberReader input = new LineNumberReader(ir);

          String line;
          while ((line = input.readLine()) != null)
             com.pub.Log.logger.debug(this.getClass().getClass() + " " +
                                               line);

          //error
          ir = new InputStreamReader(ppp.getErrorStream());
          input = new LineNumberReader(ir);
          while ((line = input.readLine()) != null)
             com.pub.Log.logger.debug(this.getClass().getClass() + " " +
                                               line);

          ppp.waitFor();
       }

    2. Linux :首先要确保对于命令,允许Web服务器的用户是否有权限,普通命令和windows没什么区别。Linux管道命令不能这样直接执行,下面是具体实现fang

       public void execLinuxCmd(String cmd) throws Exception {
          Runtime rt = Runtime.getRuntime();
          File f = new File(this.fileName + PDU_SHELL);
          BufferedWriter bw = new BufferedWriter(new FileWriter(f));
          bw.write("#!/bin/bash");
          bw.newLine();
          bw.write(cmd);  //把命令写入一个文本shell文件
          bw.flush();
          bw.close();
          cmd = f.getAbsolutePath();

          Process ppp = rt.exec("chmod a+x " + cmd);  //授权该shell文件可以执行
          ppp.waitFor();

          ppp = rt.exec(cmd);  //执行shell

          //input
          InputStreamReader ir = new InputStreamReader(ppp.getInputStream());
          LineNumberReader input = new LineNumberReader(ir);

          String line;
          while ((line = input.readLine()) != null)
             com.pub.Log.logger.debug(this.getClass().getClass() + " " +
                                               line);

          //error
          ir = new InputStreamReader(ppp.getErrorStream());
          input = new LineNumberReader(ir);
          while ((line = input.readLine()) != null)
             com.pub.Log.logger.debug(this.getClass().getClass() + " " +
                                               line);

          ppp.waitFor();

       }

    转载自:http://blog.csdn.net/winderain/archive/2006/04/22/673497.aspx

    感谢原作者

  • 相关阅读:
    企业IT管理员IE11升级指南【1】—— Internet Explorer 11增强保护模式 (EPM) 介绍
    探讨 : Host在IIS上的WCF Service的执行方式
    JavaScript性能优化
    canvas圆形进度条(逆时针)
    微信二次分享无标题无图片问题参考
    Promise学习
    好用的jq复制插件clipboard.js
    掘金好文链接
    js冒泡排序
    基于JQ的记忆翻牌游戏
  • 原文地址:https://www.cnblogs.com/lechie/p/2383217.html
Copyright © 2011-2022 走看看