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

    感谢原作者

  • 相关阅读:
    Eclipse智能提示及快捷键
    Activity生命周期
    【highlight.js】页面代码高亮插件
    【Flask】 flask-socketio实现WebSocket
    【treeview】 基于jQuery的简单树形插件
    【Zabbix】大规模监控误报发生时的处理方案
    【Java】 重拾Java入门
    【Flask】 网站的用户管理
    【Flask】 结合wtforms的文件上传表单
    【Python】 Web开发框架的基本概念与开发的准备工作
  • 原文地址:https://www.cnblogs.com/lechie/p/2383217.html
Copyright © 2011-2022 走看看