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

    感谢原作者

  • 相关阅读:
    动态生成 Excel 文件供浏览器下载的注意事项
    JavaEE 中无用技术之 JNDI
    CSDN 泄露用户密码给我们什么启示
    刚发布新的 web 单点登录系统,欢迎下载试用,欢迎提建议
    jQuery jqgrid 对含特殊字符 json 数据的 Java 处理方法
    一个 SQL 同时验证帐号是否存在、密码是否正确
    PostgreSQL 数据库在 Windows Server 2008 上安装注意事项
    快速点评 Spring Struts Hibernate
    Apache NIO 框架 Mina 使用中出现 too many open files 问题的解决办法
    解决 jQuery 版本升级过程中出现 toLowerCase 错误 更改 doctype
  • 原文地址:https://www.cnblogs.com/lechie/p/2383217.html
Copyright © 2011-2022 走看看