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

    感谢原作者

  • 相关阅读:
    python2代码改成python3踩过的坑
    Mac下为什么有的文件名后带一个* 星号?
    Mac 的 Vim 中 delete 键失效的原因和解决方案(转)
    使用pandas处理大型CSV文件(转)
    Java基础——02
    javaee相关基础
    Cookie&Session笔记
    EL&JSTL笔记------jsp
    JavaWeb基础
    Java基础——01
  • 原文地址:https://www.cnblogs.com/lechie/p/2383217.html
Copyright © 2011-2022 走看看